Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用XSLT生成仅包含长度为8位数字的唯一id_Xslt - Fatal编程技术网

如何使用XSLT生成仅包含长度为8位数字的唯一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

我想使用XSLT生成只包含数字的唯一id。唯一id的长度应为8位。我不想使用任何Java名称空间来生成此唯一id。我发现了一个使用Java名称空间的解决方案,该名称空间具有math.random()函数。但在我的例子中,Java名称空间将不起作用,因为我使用C#通过Saxon处理器生成输出

请提供一些解决方案来生成只有长度8位的唯一id,而不必在XSLT中使用Java名称空间。

如果接受“顺序”id(连续数字),则可以使用
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”
    从任何嵌套级别
  • format=“9999999”
    采用所需格式(8位)

如果仍然不清楚,请阅读
xsl:number

对于单个XSLT结果文档中的节点,您需要为哪个上下文提供唯一id?您的建议的哪一部分需要XSLT 2<代码>xsl:number也存在于XSLT1中。马丁,你说得对。起初,我不确定xsl:number的所有功能是否都在1.0版中可用。