使用浏览器,我想使用 XSL 样式表转换可能包含一些 HTML 的 XML。在这篇文章中,用户Mads Hansen写道:
如果您的 HTML 格式正确,则只需嵌入 HTML 标记,而无需在 CDTATA 中转义或换行。如果可能的话,将内容保存在 XML 中会有所帮助。它为您转换和操作文档提供了更大的灵活性。您可以为 HTML 设置一个名称空间,以便您可以消除 HTML 标记与包装它的其他 XML 的歧义。
我喜欢提出的解决方案,但无法使其发挥作用。我使用 h 作为 html 的命名空间:
临时文件
<?xml version='1.0' encoding='UTF-8' ?>
<?xml-stylesheet type='text/xsl' href='temp.xsl'?>
<root xmlns:h="http://www.w3.org/1999/xhtml">
<MYTAG title="thisnthat">
text before ol
<h:ol>
<h:li>item</h:li>
<h:li>item</h:li>
</h:ol>
text after ol
</MYTAG>
</root>
临时文件
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:h="http://www.w3.org/1999/xhtml">
<xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/root">
<html lang="en-US">
<head>
<meta charset="UTF-8" />
<title></title>
</head>
<body>
<xsl:apply-templates />
</body>
</html>
</xsl:template>
<xsl:template match="MYTAG">
<h3>
<xsl:value-of select="@title" />
</h3>
<xsl:apply-templates />
</xsl:template>
</xsl:stylesheet>
输出(来自 Firefox 18)是:
thisnthat
text before ol item item text after ol