2014-11-24 45 views
0

我在轉換查詢下面調用以使用XSLT轉換XML。MarkLogic XSLT轉換器無法正確轉換

xdmp:xslt-invoke("example.xsl", $doc,(),()) 

example.xsl包含以下內容。

<xsl:template match="CaseRef"> 
<xsl:variable xmlns:encoder="xalan://java.net.URLEncoder" name="urlEncodedCit" 
     select="encoder:encode(substring(string(@href),2))"/> 
<xsl:value-of select="$urlEncodedCit"/> 
</xsl:template> 

但是MarkLogic查詢控制檯無法正常轉換。在我看來,該文件沒有正確轉換。

但是這種轉變在saxonEE和Xalan中起作用。

任何人都可以幫我解決這個問題嗎?

謝謝。

+1

那麼你正在使用專有的擴展機制,如果它與一個XSLT處理器一起工作,或者甚至兩個,它不能保證它將與其他工作。我對Marklogic並不熟悉,如果他們的文檔沒有講述有關從XSLT調用Java的任何內容,那麼我會開始嘗試使用它來調試它。 ''。如果返回false,則不支持基於Xalan的機制。 – 2014-11-24 12:11:01

+1

你收到什麼錯誤信息?不要只告訴我們失敗的事情,告訴我們失敗的原因。 – 2014-11-24 12:13:27

回答

3

嘗試用調用標準XPath 2.0函數escape-html-uri()替換對java.net.URLEncoder的調用。

+0

非常感謝。 XPath 2.0功能幫助了我。 – Gowtham 2014-11-24 14:23:53

+0

錯誤信息應該是類似'[XSLT] XDMP-UNDFUN:(err:XPST0017)未定義的函數編碼器:encode()'。這應該是一個很好的線索,並且在此處添加它可能有助於任何人使用Google搜索錯誤消息。 MarkLogic不實現xalan擴展。您可以使用標準函數或使用MarkLogic擴展,或者在XSLT或XQuery中實現您自己的函數。 – mblakele 2014-11-24 17:43:57