我正在使用xsl:number这样:
<xsl:number level="any" count="something" format="1" />
获取一个数字,该数字大致对应于文档中当前“某事物”节点的索引。这很有帮助,但我需要更详细地说明我在文档中的位置。我正在使用XSL 2.0创建子文档,我想让我的编号对应于子文档。
所以我想知道是否有人在使用xsl:number上的count属性有任何使用XPATH的经验来完成此任务?如果指定一个更智能的计数值来限制“某事物”的范围,那就太棒了。
我似乎无法获得有效的XPATH。我试图将计数限制在某个父级下的某个东西,其中父级可以嵌套
grandparent
|
parent
|
something
something
something
parent
|
something
something
所以,我希望我可以做类似的事情:
count="ancestor::parent[1][child::something]"
换句话说,当前父节点下的“Something”计数。我不确定这是可能的。另外一种方法的想法也值得欢迎。
编辑: 刚刚发现了“from”属性。我认为这可能有用。
第二次编辑: 我能够使用Ian Roberts的建议使用'preceding ::'而不是'preceding-sibling'来实现这一点。我会将答案标记为正确,因为它非常接近。
答案 0 :(得分:1)
您可以在不使用xsl:number
<xsl:value-of select="count(ancestor-or-self::something[1]/preceding-sibling::something) + 1"/>
即。当前节点所在之前的某些事物的数量。如果您对第一个编号为0而不是1而感到高兴,请删除+1。
如果something
元素并非都被称为同名,那么您需要获得更多创意,例如:使用ancestor-or-self::*[parent::parent][1]
获取以下 parent
级别的最近祖先,无论该祖先可能被调用。
答案 1 :(得分:0)
你的部分文字描述'我试图将数量限制在某个父母的某个地方'听起来好像只是想要<xsl:number level="single" count="something"/>
。如果这不符合您的要求,请提供示例XML和您想要生成的相应编号。