xslt - 具有属性的节点的位置

标签 xslt xpath attributes position nodes

如何在 XSL 中选择具有特定属性的节点的位置。

XML:

<document type="async" page="tabTabel">
 <tabs>
  <table>
   <row type="header">
    <column type="text">href</column>
    <column type="number">Mapnr.</column>
    <column type="mapposition">Nr.</column>
    <column type="text">Description</column>
    <column type="text">Document</column>
    <column type="date">Date</column>
   </row>

   <row type="data">
    <column><![CDATA[]]></column>
    <column><![CDATA[10]]></column>
    <column><![CDATA[17]]></column>
    <column><![CDATA[Documentation may 2013 .pdf]]></column>
    <column><![CDATA[Documentation may 2013 .pdf]]></column>
    <column><![CDATA[03-04-2014]]></column>
   </row>

  </table>
 </tabs>
</document>

当前不起作用的 XSLT:

<xsl:template match="tabs//row[@type='data']>
 <xsl:variable name="mapnumber">
  <xsl:value-of select="../row[@type='header']/column[@type='mapposition'][position()]" />
 </xsl:variable>
</xsl:template>

我想要类型为“mapposition”的列的索引号/位置。我怎样才能做到这一点?

最佳答案

尝试:

<xsl:variable name="mapnumber" select="count(../row[@type='header']/column[@type='mapposition']/preceding-sibling::column) + 1" />
<小时/>

鉴于您的编辑,您可能想要执行以下操作:

<xsl:template match="table">
    <xsl:variable name="mapnumber" select="count(row[@type='header']/column[@type='mapposition']/preceding-sibling::column) + 1" />
    <xsl:value-of select="row[@type='data']/column[$mapnumber]" />
</xsl:template>

关于xslt - 具有属性的节点的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27293929/

相关文章:

java - 如何设置xpath的第二个节点

java - 如何使用 XPath 匹配以数字结尾的字符串

javascript - 自定义数据属性选择器不起作用

html - 使用 l20n 本地化属性

C# 属性及其用途

xslt - 删除 XSLT 中的最后一个逗号

xslt - 如何使用自定义 XSLT 在浏览器中显示 Atom/RSS 提要?

xml - 使用 XSL 合并 XML 文件会删除匹配的元素

xslt - 没有命名空间的 XML

用于识别节点类型的 XPath 测试