【问题标题】:XSLT for inserting the original XML into HTML code tagXSLT 用于将原始 XML 插入 HTML 代码标记
【发布时间】: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 的整个源代码复制到 &lt;code&gt; 标记中。我可以使用 &lt;xsl:copy-of&gt; 复制整个 xml 树,但代码中的 XML 在浏览器中不会可见,因为 &lt;xsl:copy-of&gt; 将原始 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"?> &lt;?xml-stylesheet href="/xsl/transform.xsl" type="text/xsl"?&gt;)。
  2. 我正在寻找 XSLT 解决方案,不建议使用将 XML 作为文本重新插入代码标记内的 javascript。
  3. 此 XSLT 将由浏览器应用。我不关心浏览器的兼容性,如果它至少可以在 Firefox 或 Chrome 中运行,那对我来说没问题。
  4. 如果代码打印得漂亮或保留空格会更好,但这是可选的。

【问题讨论】:

标签: xml xslt browser


【解决方案1】:

使用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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-12
    • 2019-12-05
    • 2020-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多