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
Xml 如何使用xslt生成随机UUID_Xml_Xslt_Xslt 2.0 - Fatal编程技术网

Xml 如何使用xslt生成随机UUID

Xml 如何使用xslt生成随机UUID,xml,xslt,xslt-2.0,Xml,Xslt,Xslt 2.0,我是xslt的新手。我想使用xslt生成32位长的UUID,并将其作为输入添加到xml中。我试着使用数学图书馆的随机函数,但得到了错误 输入XML XSLT代码段 我正在使用在线编辑器,但得到如下异常 错误:找不到名为{}random的匹配0参数函数。没有具有本地名称random的Saxon扩展函数 实际上,我需要使用xslt生成随机令牌,并将其添加到输入xml中 预期产量 在这方面有人能帮我吗。非常感谢,出现错误的原因是您使用的XSLT 2.0处理器Saxon 9不支持EXSLT math:r

我是xslt的新手。我想使用xslt生成32位长的UUID,并将其作为输入添加到xml中。我试着使用数学图书馆的随机函数,但得到了错误

输入XML

XSLT代码段

我正在使用在线编辑器,但得到如下异常

错误:找不到名为{}random的匹配0参数函数。没有具有本地名称random的Saxon扩展函数

实际上,我需要使用xslt生成随机令牌,并将其添加到输入xml中

预期产量


在这方面有人能帮我吗。非常感谢,

出现错误的原因是您使用的XSLT 2.0处理器Saxon 9不支持EXSLT math:random函数

不幸的是,XSLT 2.0中也没有本机随机函数,但使用Saxon可以调用Java方法-例如:

<xsl:stylesheet version="2.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:math="java.lang.Math"
exclude-result-prefixes="math">
<xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes"/>

<xsl:template match="/">
    <output>
        <xsl:variable name="random" select="math:random()"/>
        <xsl:value-of select="$random"/>
    </output>
</xsl:template>

</xsl:stylesheet>
要生成随机数或:

<xsl:stylesheet version="2.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:uuid="java.util.UUID"
exclude-result-prefixes="uuid">
<xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes"/>

<xsl:template match="/">
    <output>
        <xsl:variable name="random" select="uuid:randomUUID()"/>
        <xsl:value-of select="$random"/>
    </output>
</xsl:template>

</xsl:stylesheet>

要生成

,并非所有XSLT 1.0处理器都实现所有EXSLT扩展函数。在实际生产中,您将使用哪个处理器?纯xslt-1.0中的所有功能都是生成ID。实际上,我希望在登录时从输入xml获得预期的输出。在xslt中有什么方法可以做到这一点吗?谢谢。你为什么不回答这个问题呢?对不起,我犯了一个错误,我将在实际生产中使用XSLT 2.0和saxon处理器。不幸的是,saxon-HE不可能做到这一点。但是你可以自己在XSLT 2中实现UUID:请参阅我对上述问题的评论中的链接。
<users xmlns="ABC_Login">
       <email>ABC@gmail.com</email>
       <uuid>7B81A9B0D9-CA0E-E70F-ADFF-116EE7A1A980<</uuid>
    </users>
<xsl:stylesheet version="2.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:math="java.lang.Math"
exclude-result-prefixes="math">
<xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes"/>

<xsl:template match="/">
    <output>
        <xsl:variable name="random" select="math:random()"/>
        <xsl:value-of select="$random"/>
    </output>
</xsl:template>

</xsl:stylesheet>
<xsl:stylesheet version="2.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:uuid="java.util.UUID"
exclude-result-prefixes="uuid">
<xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes"/>

<xsl:template match="/">
    <output>
        <xsl:variable name="random" select="uuid:randomUUID()"/>
        <xsl:value-of select="$random"/>
    </output>
</xsl:template>

</xsl:stylesheet>