xml – 理解XSLT中的position()函数

前端之家收集整理的这篇文章主要介绍了xml – 理解XSLT中的position()函数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我和这个家伙有类似的问题:

using position() function in xslt

但我不需要编号,我只是想了解它的工作方式:

<?xml version="1.0" encoding="UTF-8"?>
<test>
<a>blah</a>
<a>blah</a>
<a>blah</a>
<a>blah</a>
</test>

对于此输入,以下样式表:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
  <html>
  <body>
<xsl:apply-templates/>
  </body>
  </html>
</xsl:template>

<xsl:template match="select">
<xsl:apply-templates/>
</xsl:template>

<xsl:template match="a">
<xsl:value-of select="position()"/><br/>
<xsl:apply-templates/>
</xsl:template>

</xsl:stylesheet>

输出

<html><body>
2<br>blah
4<br>blah
6<br>blah
8<br>blah
</body></html>

为什么跳过不均匀的数字?

Why does it skip the uneven numbers?

因为当你在/级别时,你说:

<xsl:apply-templates/>

它将模板应用于根节点的所有节点子节点,并且(由于内置的​​模板规则)将模板应用于它们的所有后代 – 包括分隔< a>的文本节点.元素.

您将获得一个输入的不同结果:

<?xml version="1.0" encoding="UTF-8"?>
<test><a>blah</a><a>blah</a><a>blah</a><a>blah</a></test>

或者如果您将样式表中的指令添加到:

<xsl:strip-space elements="*"/>

或者如果您选择性地应用模板,例如

<xsl:apply-templates select="//a"/>

猜你在找的XML相关文章