我试着像这样替换标签:
<node><br></node> -- > <node><br></node>不幸的是,当xsl解析我实际得到的xml文件时
<br>显示在页面上,而不是将其显示为标记。
发布于 2011-05-05 17:15:30
HTML不是XML,尽管它们看起来非常相似;在HTML中有四件事是有效的,但您不能用XML做这些事情,所有这些都可以修改为符合XML:
如您所见,
<br> to <br/> etc.<input type="checkbox" checked>中。只需为它们分配一个与属性同名的值,即<input type="checkbox" checked="checked" />.<b>A<i>B</b>C</i>是合法的,这会使A加粗,C加斜体,B加粗加斜体。您可以通过创建<b>A<i>B</i></b><i>C</i>或<b>A</b><i><b>B</b>C</i>.<、>、&、"、'和Unicode值(例如 / )是XML中的有效实体。默认情况下,您不能使用 或ø或任何类似的东西。要解决此问题,需要在工作表的顶部包含一个实体声明,如<!ENTITY nbsp " ">.XSLT不能处理HTML文件,除非它也是有效的XML。
通常,我总是编写兼容XML的HTML,因为它使所有XML工具都可用,而且确实没有理由不这样做。
用<br>替换<br>实际上是用恰好与html相似的文本替换标记,而不是符合<br>的标记。
发布于 2013-11-17 16:57:00
如果要插入格式不正确的html,这是一种可行的解决方法。将格式不正确的html放入xml内的注释中,然后从xsl中提取它。
XML示例:
<Data>
<!--
<div>
not well-formed xml<br>
</div>
-->
</Data>XSL示例:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
<xsl:template match="Data">
<html>
<body>
<xsl:value-of disable-output-escaping="yes" select="comment()"/>
</body>
</html>
</xsl:template>
<xsl:template match="text() | @*">
</xsl:template>
</xsl:stylesheet>输出
<html>
<body>
<div>
not well-formed xml<br>
</div>
</body>
</html>发布于 2011-05-05 07:32:50
将它们保留为<br/>,并编写适当的XSLT转换以将它们按原样映射到输出。
https://stackoverflow.com/questions/5891000
复制相似问题