我有下面的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