如何在 XSLT 中对排序列表进行编号
我在 apply-templates 中使用 xsl:sort 对元素进行排序,我希望它们也编号,但如果我尝试使用 xsl:number,那么它只会给出原始位置,而不是排序后的位置。我猜变量也不能使用,因为它们不能改变?那么我怎样才能正确地给我的清单编号呢?
I used xsl:sort in apply-templates to sort the elements and I would like to have them also numbered, but if I try to use xsl:number, then it just gives the original position, not the one after sorting. I guess variables can't be used either because they cannot be changed? So how can I correctly number my list?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用
获取循环中的当前位置。根据 xpath 规范: position 函数返回一个等于表达式求值中上下文位置的数字上下文。
XML:
XSLT(测试.xsl):
You can use
<xsl:value-of select="position()" />
to get the current position in the loop.From the xpath spec: The position function returns a number equal to the context position from the expression evaluation context.
XML:
XSLT (test.xsl):
来自OP的评论:
这里有两个示例,都使用
- 而不是
:当此转换应用于以下 XML 文档时:
它会生成元素的编号列表,按除以 3 后的余数排序:
第二个示例是 XSLT 1.0 中广泛使用的编程惯用法:
当此转换应用于以下 XML 文档时:
它使用
position()=1
在排序的节点列表上:From a comment of the OP:
Here are two examples, both using
<xsl:apply-templates>
-- not<xsl:for-each>
:When this transformation is applied on the following XML document:
It produces a numbered list of elements, sorted by their remainder when divided by 3:
The second example is a programming idiom used extensively in XSLT 1.0:
When this transformation is applied on the following XML document:
It produces the maximum of all the numbers, using
position()=1
on the sorted node-list: