加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 07:41:05 所属栏目:百科 来源:网络整理
导读:我和这个家伙有类似的问题: using position() function in xslt 但我不需要编号,我只是想了解它的工作方式: ?xml version="1.0" encoding="UTF-8"?testablah/aablah/aablah/aablah/a/test 对于此输入,以下样式表: ?xml version="1.0" encoding="UTF-8"?xs
我和这个家伙有类似的问题:

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"/>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读