【发布时间】:2017-07-29 03:28:06
【问题描述】:
我在 XSLT 中遇到了问题: 我的 xml 是:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<nums>
<num>02</num>
<num>02</num>
<num>03</num>
<num>04</num>
<num>05</num>
<num>06</num>
<num>06</num>
<num>08</num>
<num>09</num>
<num>10</num>
</nums>
我当前的 XSLT 是:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:param name="pGroupSize" select="3"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="/*">
<nums>
<xsl:apply-templates select=
"num[position() mod $pGroupSize = 1]"/>
</nums>
</xsl:template>
<xsl:template match="num">
<group>
<xsl:copy-of select=
".|following-sibling::*
[not(position() > $pGroupSize -1)]"/>
</group>
</xsl:template>
</xsl:stylesheet>
我当前的输出: 无论节点值如何,都拆分 xml。
<nums>
<group>
<num>02</num>
<num>02</num>
<num>03</num>
</group>
<group>
<num>04</num>
<num>05</num>
<num>06</num>
</group>
<group>
<num>07</num>
<num>08</num>
<num>09</num>
</group>
<group>
<num>10</num>
</group>
</nums>
我预期的输出 XML: 首先检查是否有任何与最后一个节点匹配的节点,如果有,则包含它们,否则排除它们。
<nums>
<group>
<num>02</num>
<num>02</num>
<num>03</num>
</group>
<group>
<num>04</num>
<num>05</num>
<num>06</num>
<num>06</num>
</group>
<group>
<num>08</num>
<num>09</num>
<num>10</num>
</group>
</nums>
【问题讨论】:
-
您可能想要更详细地解释这种情况。您是否只对所有相邻的
06兄弟姐妹或您的示例中的任何06兄弟姐妹感兴趣? -
只有相邻的 06 兄弟