<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节点访问其他元素的值。请帮助告诉我建议方法的性能问题。
任何想法建议都必须得到赞赏。
答案 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。