2011-03-24 71 views
1

如何使用xslt顯示註冊商標符號®。轉換爲xslt時,不顯示正確的符號。xslt不支持註冊商標符號

String reg = dirspechars("stackoverflow ®",getspechar()) 

getspechars() 
{ 
    spechars.put("®","®") 
    } 

<xsl:value-of select="@reg"/> 

和該字符串傳遞給XSL,並轉換到html.I試圖與編碼的字符也\u00AE,即使我收到1字節的UTF-8序列的問題無效字節1。

由於我編碼xsl version1.0和編碼=「utf-8」standalone =「是」事件但它沒有顯示正確的商標符號。

+1

好像你完全忘記了提供您的XSLT轉換,源XML文檔,預期的結果和實際結果轉型。截至目前,這個問題根本不是一個XSLT問題。 – 2011-03-24 13:17:22

+0

這是您的轉換結果** consumer **的編碼問題。查看我的答案以獲得解釋。 – 2011-03-24 13:53:30

回答

4

嘗試通過號碼確定所述實體:&#174;

+1

另請參閱包含2個附加選項的此答案:http://stackoverflow.com/questions/31870/using-a-html-entity-in-xslt-e-g-nbsp/31873#31873 – sudocode 2011-03-24 13:08:08

0

我編碼在xsl 1.0版和 編碼= 「UTF-8」 獨立= 「是」 儘管它已經被不顯示 正確的商標符號。

這是轉型的結果消費者編碼問題。

如果這是一個瀏覽器(比如IE)將不知道任何有關UTF-8編碼和顯示®您必須聲明編碼。在HTML:

<html> 
    <head> 
     <META http-equiv="Content-Type" content="text/html; charset=utf-8"> 
     <title>Output ® test</title> 
    </head> 
    <body>®</body> 
</html> 

將由這個樣式表正確地產生:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output encoding="utf-8"/> 
    <xsl:template match="/"> 
     <html> 
      <head> 
       <title>Output ® test</title> 
      </head> 
      <body>&#174;</body> 
     </html> 
    </xsl:template> 
</xsl:stylesheet>