如何在 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/