xml - XSLT 用于将原始 XML 插入 HTML 代码标记

标签 xml xslt browser

我有一个 XML 文件,其中链接了一个外部 xsl 样式表。该文件看起来有点像这样:

<?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>
            &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
            &lt;?xml-stylesheet href=&quot;/xsl/transform.xsl&quot; type=&quot;text/xsl&quot;?&gt;
            &lt;test&gt;
                &lt;foo /&gt;
            &lt;/test&gt;
        </code>
    </body>
</html>

这种转变可能吗?

注释:

  1. 我不关心是否显示 XML 处理指令(例如 <?xml version="1.0" encoding="utf-8"?> <?xml-stylesheet href="/xsl/transform.xsl" type="text/xsl"?> )。
  2. 我正在寻找 XSLT 解决方案,不建议使用将 XML 作为文本重新插入代码标记内的 javascript。
  3. 此 XSLT 将由浏览器应用。我不关心浏览器兼容性,如果它至少适用于 Firefox 或 Chrome 之一,那么对我来说就很好。
  4. 如果代码打印得漂亮或者保留空格会更好,但这是可选的。

最佳答案

使用Evan Lenz样式表xml-to-string.xsl会达到你想要的。

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:import href="xml-to-string.xsl"/>
    <xsl:template match="/">
        <html>
            <body>
                <code>
                    <xsl:call-template name="xml-to-string">
                        <xsl:with-param name="node-set" select="/"/>
                    </xsl:call-template>
                </code>
            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>

关于xml - XSLT 用于将原始 XML 插入 HTML 代码标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23022320/

相关文章:

php - 如何恢复 PHP session ?

javascript - 固定导航/标题和键盘滚动

android - 如何创建一个只有一侧有描边的按钮,以便在按下按钮时颜色发生变化

xml - 如何使用 xpath 表达式将多个文本节点选择为单个字符串?

java - parser.setFeature 与 parser.setValidating

xml - 合并 XML 文件同时忽略重复元素

xml - 根据 XSL 参数按名称删除元素和/或属性

android - 使用 .NET 读取 Android 应用程序 (apk) 的 ApplicationManifest

regex - XSLT - 通过分析文本节点添加新节点

internet-explorer - 按浏览器版本阻止混合内容