我有一个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
任何人都可以把我放在正确的方向吗?
答案 0 :(得分:0)
如果您想让node2
除node4
和node5
以外的所有孩子,请尝试:
<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>
答案 1 :(得分:-1)
我自己得到了答案,没有使用模板 上面的答案也可能是正确的 但以下对我来说就像一个魅力
<xsl:for-each select="/node1/node2/*[name()= node4 or name()= node5]>
<newNode>
value of selected nodes
</newNode>
</xsl:for-each>