这是一个例子,我想知道它是否可能。
我有一些我想循环的xml并检查值取决于我想要插入一个值。
我基本上希望它的工作原理是: 如果node1 = aa或ab node0 =太棒了 和 如果node1 = bc或bd node0 =美丽
但是我只希望node0在集合的第一个节点0中显示漂亮或真棒。
这是输入
<parent>
<sibling>
<node1>aa</node1>
<node2></node2>
<node3></node3>
<node4></node4>
<node5></node5>
</sibling>
<sibling>
<node1>ab</node1>
<node2></node2>
<node3></node3>
<node4></node4>
<node5></node5>
</sibling>
<sibling>
<node1>bb</node1>
<node2></node2>
<node3></node3>
<node4></node4>
<node5></node5>
</sibling>
<sibling>
<node1>bc</node1>
<node2></node2>
<node3></node3>
<node4></node4>
<node5></node5>
</sibling>
<sibling>
<node1>bd</node1>
<node2></node2>
<node3></node3>
<node4></node4>
<node5></node5>
</sibling>
</parent>
输出
<parent>
<sibling>
<node0>awesome</node0>
<node1>aa</node1>
<node2></node2>
<node3></node3>
<node4></node4>
<node5></node5>
</sibling>
<sibling>
<node0></node0>
<node1>ab</node1>
<node2></node2>
<node3></node3>
<node4></node4>
<node5></node5>
</sibling>
<sibling>
<node0>beautiful</node0>
<node1>bb</node1>
<node2></node2>
<node3></node3>
<node4></node4>
<node5></node5>
</sibling>
<sibling>
<node0></node0>
<node1>bc</node1>
<node2></node2>
<node3></node3>
<node4></node4>
<node5></node5>
</sibling>
<sibling>
<node0></node0>
<node1>bd</node1>
<node2></node2>
<node3></node3>
<node4></node4>
<node5></node5>
</sibling>
</parent>
答案 0 :(得分:1)
我相信这会做你想要的:
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<!-- identity transform -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="sibling[node1='aa' or node1='ab'][1]">
<xsl:copy>
<node0>awesome</node0>
<xsl:apply-templates select="node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="sibling[node1='bb' or node1='bc'][1]">
<xsl:copy>
<node0>beautiful</node0>
<xsl:apply-templates select="node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="sibling">
<xsl:copy>
<node0/>
<xsl:apply-templates select="node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>