在XSLT 1.0中,处理这个xml元素的最佳方法是什么
<Product>This is a product. < and its price is < 10</Product>
请注意,'小于号'代表两次。即'<' and '<'.
要逃避<
字符,我可以执行此操作
<?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>
<
字符会正确显示,但"<"
会被完全删除。 <
字符会导致解析异常。 我可以做些什么来容纳两者?
答案 0 :(得分:3)
总的来说,我认为在XSLT 1.0中处理输入的最佳方法是使用其他工具将输入转换为XML,然后正常处理。面对非XML输入时,XSLT处理器的行为往往不稳定。
答案 1 :(得分:1)
简单的答案(正如其他人提到但未直接说的那样!)是输入不是XML。 XSLT根本不会对该输入进行操作 - 您需要预先处理它,或者让生成它的任何系统得到修复,以便生成实际的XML而不是看起来像 XML的东西!
答案 2 :(得分:-1)
我认为第一种方法(disable-output-escaping="yes"
)是唯一的方法。否则你会收到错误,不可能这样做。
您必须弄清楚如何防止(或修补)实体解析(<
已解决和替换)。