我有一个xml文档,如下所示
<node1>
<node2>
<node3>
val3
</node3>
<node4>
val4
</node4>
<node5>
val5
</node5>
<node6>
val6
</node6>
</node2>
</node1>
我正在使用xslt在<node2>
上循环,现在我想在结果中只包含<node4>
和<node5>
的值。我要做的是
<xsl:for-each select="/node1/node2[.= node4 or .= node5]/*>
<newNode>
value of selected nodes
</newNode>
</xsl:for-each>
我也尝试过
<xsl:for-each select="/node1/node2[name() = node4 or name() = node5]/*>
<newNode>
value of selected nodes
</newNode>
</xsl:for-each>
和
<xsl:for-each select="/node1/node2[.name()= node4 or .name()= node5]/*>
<newNode>
value of selected nodes
</newNode>
</xsl:for-each>
但是我得到了所有4个节点的值,即node3、node4、node5和node6
有谁能给我指个方向吗?
发布于 2013-05-23 14:05:25
我自己没有使用模板就得到了答案,上面的答案可能也是对的,但下面的答案对我来说非常有效
<xsl:for-each select="/node1/node2/*[name()= node4 or name()= node5]>
<newNode>
value of selected nodes
</newNode>
</xsl:for-each>
发布于 2013-05-23 13:16:21
如果您想获取除node4
和node5
之外的所有node2
子项,您应该尝试:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml"/>
<xsl:template match="/">
<xsl:for-each select="/node1/node2">
<newNode>
<xsl:apply-templates/>
</newNode>
</xsl:for-each>
</xsl:template>
<xsl:template match="node4[parent::node2]"/>
<xsl:template match="node5[parent::node2]"/>
</xsl:stylesheet>
输出:
<newNode>val3 val6</newNode>
https://stackoverflow.com/questions/16705840
复制相似问题