![](/img/trans.png)
[英]How to transform markdown language from XML CDATA Element into HTML and XSL:FO using XSL-Transformations?
[英]XSL transform HTML inside XML using alternate namespace
对于浏览器,我想使用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
由于您正在生成最终的HTML并处于控制之中,因此我不确定为什么要在此处使用名称空间。 仅当自定义标签和标准HTML之间存在冲突时才需要执行此操作,即,如果您的自定义<a...>
...>标签的语义与HTML有所不同。 我得到了您的转变以
a)删除所有HTML名称空间
b)添加身份转换
test.xml
<?xml version='1.0' encoding='UTF-8' ?>
<?xml-stylesheet type='text/xsl' href='test.xsl'?>
<root>
<MYTAG title="thisnthat">
text before ol
<ol>
<li>item</li>
<li>item</li>
</ol>
text after ol
</MYTAG>
</root>
test.xsl
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="UTF-8" indent="yes"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.