我和这个家伙有类似的问题:
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"/>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。