Function 在xslt 2中调用自定义函数

Function 在xslt 2中调用自定义函数,function,xslt,Function,Xslt,我想调用xslt内部编写的函数 我这样称呼它 <xsl:value-of select='foo:compareCI()'/> 这种方式被定义为 <xsl:function name='foo:compareCI'> <xsl:value-of select='jkhjkhjk'/> </xsl:function

我想调用xslt内部编写的函数

我这样称呼它

  <xsl:value-of select='foo:compareCI()'/>  

这种方式被定义为

   <xsl:function name='foo:compareCI'>                                              
             <xsl:value-of select='jkhjkhjk'/>
   </xsl:function>  

现在我必须将它添加到标题中,但我知道正确的方法是什么

     <xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform'  
       version='2.0'  
       xmlns:foo='http://whatever'>  


有人能帮忙吗?

如果您想使用
xsl:function
,请确保使用XSLT 2.0处理器,函数返回字符串常量的一个最简单的例子是

   <xsl:function name='foo:compareCI'>                                              
             <xsl:sequence select="'jkhjkhjk'"/>
   </xsl:function> 

使用声明为的命名空间,例如

<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0" xmlns:foo="http://example.com/foo">

然后,您可以使用以下命令调用该函数:

<xsl:value-of select="foo:compareCI()"/>


您希望函数返回哪种类型的值?函数体中没有上下文项,因此尝试选择名为
jkhjk
的元素的
将不起作用。也许您是对的,这是错误的。我只想返回一个简单的字符串。但是我不能称之为“我得到了这个错误”找不到与名称空间相关联的脚本或扩展对象“,我认为xmlns:foo=''这是因为我认为您得到了一个错误,因为您使用的是不支持XSLT 2.0的XSLT处理器的代码。您需要将名称空间URI绑定到前缀
foo
,您可以创建任何想要的名称空间URI,我使用了一个明确保留用于示例的URI。如果您愿意,可以使用不同的方法。我遇到以下错误“找不到与命名空间关联的脚本或扩展对象”。“请查看它的工作方式,并确保按照所述操作:“确保使用XSLT 2.0处理器”。错误消息表明您正试图使用XSLT1.0处理器执行代码。XSLT2处理器是Saxon 9、XmlPrime、Altova XMLSpy/Raptor。