gpt4 book ai didi

xslt-1.0 - 需要在 XSLT 1.0 中创建带参数的函数

转载 作者:行者123 更新时间:2023-12-04 14:25:15 24 4
gpt4 key购买 nike

在创建带参数的函数时需要一些帮助,并且可以在我的模板中使用。尝试了很多事情,但没有成功。下面是我的示例代码:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0"
xmlns:math="http://exslt.org/math"
xmlns:func="http://exslt.org/functions"
xmlns:my="http://exslt.org/my"
exclude-result-prefixes="my"
extension-element-prefixes="my math func">
<xsl:output indent="yes" method="xml" />


<xsl:variable name="functionTest11">
<xsl:value-of select="my:calXY('aa')" />
</xsl:variable>

<xsl:template match="/">

<svg xmlns="http://www.w3.org/2000/svg">
<xsl:variable name="functionTest22">
<xsl:value-of select="my:calXY" />
</xsl:variable>
<xsl:comment>functionTest <xsl:copy-of
select="$functionTest22" /></xsl:comment>
</svg>

</xsl:template>

<func:function name="my:calXY">
<xsl:comment>functionHello </xsl:comment>
<xsl:param name="string1" select="''"/>
<func:result>
<xsl:value-of select="concat(10,'|',10)" />
</func:result>
</func:function>
</xsl:stylesheet>

最佳答案

我无法(据我所知)方便地访问 Xalan,它似乎是您正在使用的 XSLT 处理器。所以我无法测试关于你问题起源的任何猜想。

但是如果在第一个(也是唯一的)xsl:param 之前放置像 xsl:comment 这样的输出指令是正确的,那会让我大吃一惊。 (令我惊讶的是,您没有报告来自样式表编译器的任何错误消息。但是从您引用的错误消息中可以清楚地看出,Xalan 尚未成功编译该函数。)不清楚您试图通过函数实现什么返回注释节点和字符串值“10|10”,但这可能不是实现它的方法。

假设 xsl:comment 指令试图验证该函数实际上已经被评估,我会尝试类似的东西

<func:function name="my:calXY">
<xsl:param name="string1" select="''"/>
<func:result select="concat(10,'|',10)" />
</

[在这个答案的早期版本中,我推测这里不需要func:result;我的错误。它似乎确实需要。]


您要求一个完整的样式表。以下样式表在使用 xsltproc 运行时按预期运行。 (正如我上面提到的,我没有运行 Xalan 的便捷方法。)

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
version="1.0"
xmlns:func="http://exslt.org/functions"
xmlns:my="http://example.org/my"
exclude-result-prefixes="my"
extension-element-prefixes="func">
<xsl:output indent="yes" method="xml" />

<xsl:template match="/">
<xsl:message>Result is <xsl:value-of select="my:dummy('foo')"/></xsl:message>
<output>
<test><xsl:value-of select="my:dummy('bar')"/></test>
<test><xsl:value-of select="my:dummy('baz')"/></test>
</output>
</xsl:template>

<func:function name="my:dummy">
<xsl:param name="s" select="'foo'"/>
<func:result select="concat($s,'|',$s)" />
</func:function>

</xsl:stylesheet>

关于xslt-1.0 - 需要在 XSLT 1.0 中创建带参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47032640/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com