我有一個XSLT模板。它被調用並從Java程序發送給它。XSLT:在輸入字符串中具有&符號,如何轉義它
問題是,其中一個變量包含'&'
。
<xsl:value-of select="customerName" />
customerName可能包含'&'
。無論我做什麼,我都無法得到它。我試過
replace(customerName, '&', '&')
有沒有什麼辦法可以讓這個渲染?
我有一個XSLT模板。它被調用並從Java程序發送給它。XSLT:在輸入字符串中具有&符號,如何轉義它
問題是,其中一個變量包含'&'
。
<xsl:value-of select="customerName" />
customerName可能包含'&'
。無論我做什麼,我都無法得到它。我試過
replace(customerName, '&', '&')
有沒有什麼辦法可以讓這個渲染?
試試這個,
<xsl:if test="contains($customerName,'&')">
<xsl:value-of select="concat(substring-before($customerName,'&'),substring-after($customerName,'&'))"/>
</xsl:if>
要在XSLT環境中運行XML,XML應該有標準的實體,即ISO實體,統一實體等只允許。
如果找到'&',那麼這些字符串應該以';'結尾。 (實體表示是& ....;,即實體應以分號結束以及那些被應定義實體)
這裏&「不是一個實體,「&安培;」或'&#x0026;'是一個實體。
所以輸入java參數集包含一個&
和輸出需要一個&
也許也是XML。
然後使用頂部的output元素來實現此目的。
<xsl:output method="xml"/>
替代
你可以嘗試糾正它的的Java方太。哪些在&
上不工作時應與替換&
一起運行。
customerName = customerName.replace(, "&", "&");
在XSLT中,以下內容可能會正常工作。
replace($customerName, '&', '&amp;')
我能解決這個問題。 基本上,因爲輸入參數'&',它是無效的XML。我不得不對它進行xml編碼。
你的回答與你的問題一樣不清楚。輸入**參數**不一定是有效的XML。這是一個技術問題 - 使用精確的術語很重要。 – 2014-11-25 12:36:18
如果'customerName'是一個參數,它應該是' '。注意'$'。你不需要用Java取代任何東西。 –
Tomalak
2014-11-24 06:31:41
渲染在什麼? – 2014-11-24 06:35:22
你的問題很混亂。您提到了「輸入字符串」,「參數」和「其中一個變量」 - 但是您的樣式表指向源文檔中的節點。如果這是(非轉義)&符號的位置,那麼您的源文檔不是XML,不能由XSLT處理。如果它在參數中,那麼它不應該有任何問題。 – 2014-11-24 07:41:00