【发布时间】:2014-04-11 20:49:33
【问题描述】:
我有一个链接到外部 xsl 样式表的 XML 文件。该文件看起来有点像这样:
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="/xsl/transform.xsl" type="text/xsl"?>
<test>
<foo />
</test>
我想将未转换的 XML 的整个源代码复制到 <code> 标记中。我可以使用 <xsl:copy-of> 复制整个 xml 树,但代码中的 XML 在浏览器中不会可见,因为 <xsl:copy-of> 将原始 XML 转换为实际标签而不是转义文本。
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="*">
<html>
<body>
<code>
<xsl:copy-of select="/"/>
</code>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
预期输出:
<html>
<body>
<code>
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="/xsl/transform.xsl" type="text/xsl"?>
<test>
<foo />
</test>
</code>
</body>
</html>
这种转变可能吗?
注意事项:
- 我不在乎是否显示 XML 处理指令(例如
<?xml version="1.0" encoding="utf-8"?>或<?xml-stylesheet href="/xsl/transform.xsl" type="text/xsl"?>)。 - 我正在寻找 XSLT 解决方案,不建议使用将 XML 作为文本重新插入代码标记内的 javascript。
- 此 XSLT 将由浏览器应用。我不关心浏览器的兼容性,如果它至少可以在 Firefox 或 Chrome 中运行,那对我来说没问题。
- 如果代码打印得漂亮或保留空格会更好,但这是可选的。
【问题讨论】: