2014-11-24 108 views
-1

我有一個XSLT模板。它被調用並從Java程序發送給它。XSLT:在輸入字符串中具有&符號,如何轉義它

問題是,其中一個變量包含'&'

<xsl:value-of select="customerName" /> 

customerName可能包含'&'。無論我做什麼,我都無法得到它。我試過

replace(customerName, '&', '&amp;') 

有沒有什麼辦法可以讓這個渲染?

+2

如果'customerName'是一個參數,它應該是''。注意'$'。你不需要用Java取代任何東西。 – Tomalak 2014-11-24 06:31:41

+1

渲染在什麼? – 2014-11-24 06:35:22

+0

你的問題很混亂。您提到了「輸入字符串」,「參數」和「其中一個變量」 - 但是您的樣式表指向源文檔中的節點。如果這是(非轉義)&符號的位置,那麼您的源文檔不是XML,不能由XSLT處理。如果它在參數中,那麼它不應該有任何問題。 – 2014-11-24 07:41:00

回答

-1

試試這個,

<xsl:if test="contains($customerName,'&amp;')"> 
    <xsl:value-of select="concat(substring-before($customerName,'&amp;'),substring-after($customerName,'&amp;'))"/> 
    </xsl:if> 
+0

他不想刪除它,他想渲染它。 – EJP 2014-11-24 07:28:46

+0

那麼他使用XSLT-2的替換功能,基本上刪除了一個角色,並放置另一個角色。那就是我以不同的方式完成的。 Xml基本上用於攜帶數據,因爲&是保留的字符,它需要轉義或刪除。 – Saurav 2014-11-24 08:10:18

0

要在XSLT環境中運行XML,XML應該有標準的實體,即ISO實體,統一實體等只允許。

如果找到'&',那麼這些字符串應該以';'結尾。 (實體表示是& ....;,即實體應以分號結束以及那些被應定義實體)

這裏&「不是一個實體,「&安培;」或'&#x0026;'是一個實體。

1

所以輸入java參數集包含一個&和輸出需要一個&amp;也許也是XML。

然後使用頂部的output元素來實現此目的。

<xsl:output method="xml"/> 

替代

你可以嘗試糾正它的的Java方太。哪些在&上不工作時應與替換&amp;一起運行。

customerName = customerName.replace(, "&", "&amp;"); 

在XSLT中,以下內容可能會正常工作。

replace($customerName, '&amp;', '&amp;amp;') 
0

我能解決這個問題。 基本上,因爲輸入參數'&',它是無效的XML。我不得不對它進行xml編碼。

+0

你的回答與你的問題一樣不清楚。輸入**參數**不一定是有效的XML。這是一個技術問題 - 使用精確的術語很重要。 – 2014-11-25 12:36:18

相關問題