如何使用XSLT生成仅包含长度为8位数字的唯一id
我想使用XSLT生成只包含数字的唯一id。唯一id的长度应为8位。我不想使用任何Java名称空间来生成此唯一id。我发现了一个使用Java名称空间的解决方案,该名称空间具有math.random()函数。但在我的例子中,Java名称空间将不起作用,因为我使用C#通过Saxon处理器生成输出 请提供一些解决方案来生成只有长度8位的唯一id,而不必在XSLT中使用Java名称空间。如果接受“顺序”id(连续数字),则可以使用如何使用XSLT生成仅包含长度为8位数字的唯一id,xslt,Xslt,我想使用XSLT生成只包含数字的唯一id。唯一id的长度应为8位。我不想使用任何Java名称空间来生成此唯一id。我发现了一个使用Java名称空间的解决方案,该名称空间具有math.random()函数。但在我的例子中,Java名称空间将不起作用,因为我使用C#通过Saxon处理器生成输出 请提供一些解决方案来生成只有长度8位的唯一id,而不必在XSLT中使用Java名称空间。如果接受“顺序”id(连续数字),则可以使用xsl:number 示例脚本: <?xml version="1.0
xsl:number
示例脚本:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy><xsl:apply-templates select="@*|node()"/></xsl:copy>
</xsl:template>
<xsl:template match="*">
<xsl:copy>
<xsl:attribute name="id">
<xsl:number level="any" count="*" format="99999999"/>
</xsl:attribute>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
有关xsl:number的详细信息:
导致对所有元素进行计数count=“*”
从任何嵌套级别level=“any”
采用所需格式(8位)format=“9999999”
如果仍然不清楚,请阅读
xsl:number
对于单个XSLT结果文档中的节点,您需要为哪个上下文提供唯一id?您的建议的哪一部分需要XSLT 2<代码>xsl:number也存在于XSLT1中。马丁,你说得对。起初,我不确定xsl:number的所有功能是否都在1.0版中可用。