我有下面的XML:HTML實體不會在瀏覽器中正確呈現XSLT變換後
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<example>
<contactInfo>
<id>12319221</id>
<name>Jerry P</name>
<market>
<name>Test</name>
<phone>800.555.1010</phone>
</market>
<agent>
<name>Test User</name>
<email>[email protected]</email>
</agent>
<summary>&#8220;Jerry just gets it!&#8221;</summary>
</contactInfo>
</example>
我的編碼特殊字符爲HTML實體當我保存這個XML文檔,智能引號,因此如何編碼爲&#8220;和&#8221。
我使用XSL,通過Java/Xalan,它在XML文檔轉換爲HTML:
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="wsHost"></xsl:param>
<xsl:param name="serverId"></xsl:param>
<xsl:template match="/showcase">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Example</title>
</head>
<body>
<div id="profile">
<xsl:apply-templates/>
</div>
</body>
</html>
</xsl:template>
<!-- Contact Info section -->
<xsl:template match="/example/contactInfo">
<span class="sectionTitle">Contact Info:</span>
<div id="contactInfo">
<xsl:if test="name">
<strong>Candidate Name:</strong> <xsl:value-of disable-output-escaping="yes" select="name" /><br />
</xsl:if>
<xsl:if test="id">
<strong>Candidate ID:</strong> <xsl:value-of disable-output-escaping="yes" select="id" /><br />
</xsl:if>
<xsl:if test="market">
<xsl:if test="market/name">
<strong>Market Name:</strong> <xsl:value-of disable-output-escaping="yes" select="market/name" /><br />
</xsl:if>
<xsl:if test="market/phone">
<strong>Market Phone:</strong> <xsl:value-of disable-output-escaping="yes" select="market/phone" /><br />
</xsl:if>
</xsl:if>
<xsl:if test="agent">
<xsl:if test="agent/name">
<strong>Agent Name:</strong> <xsl:value-of disable-output-escaping="yes" select="agent/name" /><br />
</xsl:if>
<xsl:if test="agent/email">
<strong>Agent Email:</strong> <xsl:value-of disable-output-escaping="yes" select="agent/email" /><br />
</xsl:if>
</xsl:if>
<xsl:if test="summary">
<strong>Summary:</strong> <xsl:value-of disable-output-escaping="yes" select="summary" /><br />
</xsl:if>
</div>
<hr size="1" noshade="noshade" class="rule" />
</xsl:template>
</xsl:stylesheet>
,從那麼變換寫入到瀏覽器產生的HTML。這裏是我注意到字符編碼問題的地方。 (數字值)顯示爲黑色菱形問號(firefox)或框字符(即),以及先前編碼的實體(「/」)。
另外,也許最大的提示是,當在linux平臺上轉換此xml文件(然後將html寫入firefox)時,所有內容都顯示正確。只有在窗口完成變換時纔會出現字符編碼問題(在Firefox和ie中)。
我編碼的實體不正確或可能不指定一個字符集的地方?
確定,所以我已經添加: 的 現在生成的html收到了一個元標記,其內容類型爲: 我希望能夠呈現html標記,都包含在原始的XML(HTML可能不是格式良好),這將要求我不能逃脫<到& lt ;. 但我也需要轉義—到&#8212; (長連字符),否則它們顯示爲窗口塊(包括firefox/ie)。 我應該逃避一些而不是其他人嗎? –
abargnesi
2009-12-10 16:55:49
老實說,我onyl發佈了一個答案,因爲沒有一個編碼附加到HTML跳到otu在我身上...我用XSL/XSLT很少,所以我不知道我可以準確地回答你的評論。但即時通訊想知道如果它可以改變的東西,如果你添加到特定元素的XML文件的XML NS ...這會以任何方式幫助你的轉變?或者是因爲可能的格式錯誤而導致無法訪問?將包含html的元素的內容包裝在CDATA部分中會更好嗎? – prodigitalson 2009-12-10 17:09:37