1
使用浏览器,我想要将可能包含某些HTML的XML转换为XSL样式表。 在this article,用户Mads Hansen写道:使用替代命名空间在XML内进行XSL转换
如果精心形成你的HTML,那么就嵌入HTML标签不逃逸或CDTATA包装 。如果可能的话,它有助于保持您的内容在XML中。它为您提供更多灵活性来转换和操作文档。 您可以为HTML设置一个名称空间,以便您可以从包装它的其他XML中消除您的HTML标记的歧义。
我喜欢建议的解决方案,但无法使其工作。我用H作为命名空间HTML:
temp.xml
<?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>
temp.xsl
<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
输出是在浏览器窗口中呈现的还是在转换后的实际HTML中显示的?如果是前者,请显示HTML(使用Firebug)。另外,如果没有标识转换,最后一个'apply-templates'只会写出ol的文本(即不复制节点)。 –
“我喜欢所提出的解决方案,但无法使其工作。”不能做什么工作?预期的结果是什么?请向我们展示原始输出,而不仅仅是它在Firefox中的外观。 – JLRishe
那么,问题是什么?我没看到一个。 –