首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在xslt中使用for循环遍历节点

在xslt中使用for循环遍历节点
EN

Stack Overflow用户
提问于 2013-05-23 12:46:52
回答 2查看 1.1K关注 0票数 0

我有一个xml文档,如下所示

代码语言:javascript
运行
复制
<node1>
  <node2>
    <node3>
      val3
    </node3>
    <node4>
      val4
    </node4>
    <node5>
     val5
    </node5>
    <node6>
      val6
    </node6>
  </node2>
</node1>

我正在使用xslt在<node2>上循环,现在我想在结果中只包含<node4><node5>的值。我要做的是

代码语言:javascript
运行
复制
<xsl:for-each select="/node1/node2[.= node4 or .= node5]/*>
  <newNode>
    value of selected nodes
  </newNode>
</xsl:for-each>

我也尝试过

代码语言:javascript
运行
复制
<xsl:for-each select="/node1/node2[name() = node4 or name() = node5]/*>
      <newNode>
        value of selected nodes
      </newNode>
    </xsl:for-each>

代码语言:javascript
运行
复制
<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

有谁能给我指个方向吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-23 14:05:25

我自己没有使用模板就得到了答案,上面的答案可能也是对的,但下面的答案对我来说非常有效

代码语言:javascript
运行
复制
<xsl:for-each select="/node1/node2/*[name()= node4 or name()= node5]>
      <newNode>
        value of selected nodes
      </newNode>
    </xsl:for-each>
票数 -1
EN

Stack Overflow用户

发布于 2013-05-23 13:16:21

如果您想获取除node4node5之外的所有node2子项,您应该尝试:

代码语言:javascript
运行
复制
<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>

输出:

代码语言:javascript
运行
复制
<newNode>val3 val6</newNode>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16705840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档