如何识别哪个元素属于XSL中的哪个节点

时间:2016-11-25 11:41:51

标签: java xml xslt

<xsl:choose>
  <xsl:when test="(/main/root/SubRoot[Section = 'A'])">
    //Call some template 
  </xsl:when>
  <xsl:otherwise>
    //some template
   </xsl:otherwise>
</xsl:choose>

我在这个文件上面有上面的XML文件我怎么能识别出类型R或任何其他元素属于哪个节点,这里是第一个SubRoot节点。

在xsl文件中,如果section的值为A,并且此部分位于第二个SubRoot节点,我正在调用模板,如下所示, 现在我想从when条件中的第二个SubRoot节点访问其他一些值。我怎么能这样做?

lapply

我需要在XSL上动态验证它。因为我在运行时不知道将为XML生成多少个节点。 如果Section元素的值为A,则其内部的第二个SubRoot节点。在此基础上,我如何从第二个SubRoot节点访问其他元素的值。请帮助告诉我建议方法的性能问题。

任何想法建议都必须得到赞赏。

1 个答案:

答案 0 :(得分:0)

在你的例子中,你没有测试某个东西是否在带有A部分的SubRoot中,但是你正在测试是否存在带有A部分的SubRoot,这是一个巨大的差异。

我猜你需要的是类似parent::SubRoot[Section/text() = 'A']的内容,它会测试直接父标记是否是带有文本A的部分的SubRoot。

或者像ancestor::SubRoot[Section/text() = 'A']之类的东西,它会测试任何父标记,大父标记等等是否是具有带文本A的部分的SubRoot。

或者类似ancestor-or-self::SubRoot[Section/text() = 'A']之类的东西,它会测试节点本身或任何父级,大父级等标记是否是具有带文本A的部分的SubRoot。