我的源XML看起来:
<test>
<text1>Test</text1>
<text2>Test</text2>
<text2>Test</text2>
<section>
<text1>Test<bold>content</bold></text1>
<text1>Test</text1>
<text2>Test</text2>
<text2>Test</text2>
</section>
</test>
想要根据元素的绝对数量(总计数)提取第6个节点的值。已使用<xsl:number level="any" from="/" count="*"/>
确定元素的绝对数量。
答案 0 :(得分:2)
XPath表达式/descendant::*[6]
应该为您提供所需的元素。
<xsl:template match="/">
<xsl:copy-of select="/descendant::*[6]" />
</xsl:template>
输出
<text1>Test<bold>content</bold></text1>
请注意,这是descendant::
和//
之间差异的示例 - //*[6]
会为您提供所有元素,这些元素是其各自父级的第六个子元素,而不仅仅是文档中的第六个元素,按深度优先顺序排列。
答案 1 :(得分:0)
这个xslt
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:variable name="allElements" select="//element()" />
<xsl:template match="/">
<output>
<xsl:value-of select="$allElements[6]" />
</output>
</xsl:template>
</xsl:stylesheet>
将导致
<?xml version="1.0" encoding="UTF-8"?>
<output>Testcontent</output>