【发布时间】:2013-02-21 21:29:26
【问题描述】:
在 XSLT 1.0 中,处理这个 xml 元素的最佳方式是什么
<Product>This is a product. < and its price is < 10</Product>
请注意,“小于号”表示了两次。即'&lt;' and '<'.
要转义 &lt; 字符,我可以这样做
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" method="html" indent="yes" />
<xsl:template match="/">
<html>
<body>
<table border="1">
<tr>
<th>Product</th>
</tr>
<tr>
<td><xsl:value-of select="Product" disable-output-escaping="yes" /></td>
</tr>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
- 如果我将禁用输出转义设置为“是”,
&lt;字符会正确显示,但"&lt;"会完全删除。 - 如果我将禁用输出转义设置为“否”,
&lt;字符会导致解析异常。
我可以做些什么来允许两者?
【问题讨论】:
-
只有魔法,而不是黑色而不是白色。请仅使用格式正确的 XML。
-
@kan 的意思是,
&lt;不是 XML 中的有效文本内容。 -
XML 无效(甚至格式正确)。 XML 要求在解析字符数据中将
&lt;转义为&lt;(或<![CDATA[<]]>或&#x3C;或诸如此类)。 (与一些 SGML 应用程序不同,XML 没有任何具有纯字符数据内容的元素的概念。) -
你希望你的输出是什么样子的。定义 input1 => output1 和 input2 => output2
-
它不是一个 XML 元素,所以你不能用 XSLT 处理它。
标签: java html xml xslt xslt-1.0