我想在我的xslt样式表中使用generate-id
。
但是,此函数会生成一个8个字符长的id。
有没有办法让id只有两个字符?当然这会产生有限数量的可能id(1296种可能性),但我永远不需要超出这个限制。
由于
答案 0 :(得分:3)
如果您只需要ID对单个文档中的节点是唯一的,则可以使用
<xsl:number count="*" level="any" from="/*" format="a"/>
答案 1 :(得分:0)
如果您想使用XML名称中允许的所有unicode字符,那么您将拥有超过1296种可能性,包含2个字符!
不幸的是,XSLT处理器可以自由决定如何为generate-id()
函数创建ID(这意味着根据您使用的处理器,您可以获得多于或少于8个字符)。
话虽如此,如果这对你真的很重要,你应该能够根据前面兄弟节点和祖先节点节点(generate-id()
)的数量编写自己的count(ancestor::node()|preceding::node())
...你可以使用查找表或任何其他机制将此数字转换为两个字符的id,这可能效率不高但是应该有效......