通过计算绝对位置提取节点值



我的源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="*"/>来识别。

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

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

输出

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

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

此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>

相关内容

  • 没有找到相关文章

最新更新