0

我的源 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="*"/>

4

2 回答 2

2

XPath 表达式/descendant::*[6]应该为您提供所需的元素。

<xsl:template match="/">
  <xsl:copy-of select="/descendant::*[6]" />
</xsl:template>

输出

<text1>Test<bold>content</bold></text1>

descendant::请注意,这是和//-之间区别的一个示例,//*[6]它将为您提供作为其各自父级的第六个子元素的所有元素,而不仅仅是文档中深度优先顺序的第六个元素。

于 2013-06-24T10:01:06.623 回答
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>
于 2013-06-24T06:39:55.807 回答