我正试图在我的XML(跨不同的父级(中第n次出现元素C
输入:
<TEST>
<A>
<B>*</B>
<C>Text1</C> (#1)
</A>
<A>
<B>*</B>
</A>
<A>
<B>/</B>
<C>Aaaa</C> (#2)
</A>
<A>
<B>/</B>
<C>Text2</C> (#3)
</A>
</TEST>
期望的结果:获得第二元素将产生";Aaaa";
我尝试过:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sch="http://sap.com/xi/ME" xmlns:me="http://sap.com/xi/ME" xmlns:gdt="http://sap.com/xi/SAPGlobal/GDT" xmlns:meint="http://sap.com/xi/MEINT" xmlns:demand="http://www.sap.com/me/demand" xmlns:common="http://www.sap.com/me/common">
<xsl:template match="/">
<xsl:value-of select="/TEST/A/descendant::C[2]"/>
</xsl:template>
</xsl:stylesheet>
我该如何让它发挥作用?
找到了这个例子,但我无法将其应用:https://stackoverflow.com/a/25280116
谢谢
我找到了解决方案(注意括号(:
<xsl:value-of select="(/TEST/A/descendant::C)[2]"/>
有关说明,请参阅:https://stackoverflow.com/a/4008925
您的尝试不起作用,因为第一个A
元素没有第二个C
子代。
要选择整个文档中的第二个C
元素,请尝试:
<xsl:value-of select="/descendant::C[2]"/>
或者(同样的事情(:
<xsl:value-of select="(//C)[2]"/>
要将选择限制为给定层次结构中的C
元素,可以执行以下操作:
<xsl:value-of select="(/TEST/A/C)[2]"/>