2017-09-25 58 views
0

我想打電話給內部XSLT編寫的函數調用自定義函數2

這種方式,我把它叫做

<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'> 

有人可以幫忙嗎?

+0

你想讓你的函數返回什麼樣的值?在函數體中沒有上下文項,所以''會嘗試選擇一個名爲'jkhjkhjk'的元素將不起作用。 –

+0

也許你有權利,這是錯誤的。我只想返回一個簡單的字符串。但我不能調用它我得到這個錯誤'無法找到一個腳本或與命名空間關聯的擴展對象',我認爲xmlns:foo ='http://無論'這是因爲它 – GomuGomuNoRocket

+1

我認爲你得到一個錯誤,因爲你正在將此代碼與不支持XSLT 2.0的XSLT處理器一起使用。 –

回答

1

確保,如果你想使用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()"/> 
+0

什麼意思'http://example.com',爲什麼我必須擁有它; – GomuGomuNoRocket

+0

您需要將名稱空間URI綁定到前綴「foo」,您可以組成任何您想要的名稱空間URI,我已經使用了一個明確保留用於示例的名稱空間URI。如果你想要使用不同的東西。 –

+0

我收到此錯誤'找不到與命名空間相關的腳本或擴展對象'http://example.com/foo''。 – GomuGomuNoRocket