通过 XSLT 将外部文件内容作为 HTML 插入

Gru*_*ber 5 html java xml xslt

我对一些 XSLT 问题有点困惑。

我有一些简单的 xml 文件和以下样式表:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:param name="linked_content"/>

<xsl:template match="/">
    <html>
        <head>
            <title>Chapter summary</title>
        </head>
        <body BGCOLOR="white">
            <xsl:value-of select="$linked_content"></xsl:value-of>
        </body>
    </html>             
</xsl:template>

</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)

linked_content来自于一个简单的文本文件(如的summary.txt):

<p>
Consider this as a simple summary ^^
</p>

<h3>Part One</h3>
Run Code Online (Sandbox Code Playgroud)

现在我的问题是:如何将文本文件中的 HTML 代码作为 HTML 代码插入到生成的 html 文件中。我知道,上面的代码不起作用,因为我只在结果插入的文本中得到 >, < 。

我不会坚持通过参数提交内容。如果他们是一种从样式表中读取文本文件的方法,那就太好了!

任何人的想法?

编辑: 仍然卡在这里。我尝试了一种解决方法,在 java 中读取文本文件并将内容设置为样式表的参数。可悲的是

  • <
  • >

标志在这个过程中被翻译成 < 和 > ......因此,html 代码被搞砸了。是否有机会强制样式表不转换它们?

谢谢!

Mic*_*Kay 0

这种问题很混乱。您可以将其视为 HTML 到 HTML 转换(其中 XSLT 处理器仅将 HTML 视为文本),或者将其视为 HTML 到 HTML 转换(其中 XSLT 处理器将 HTML 视为 XML)。在第一种情况下,您将无法对内容进行太多转换;在第二种情况下,您会遇到输入无效的情况。无论哪种方式,它都不是 XSLT 设计的纯粹 XML 到 XML 用例,因此您将需要扩展。

第一种方法 - 将其视为文本 - 可以使用禁用输出转义来实现,前提是(a)您的处理器支持它,并且(b)您使用一个处理管道,其中转换后立即进行序列化。

第二种方法 - 将其视为 XML - 可以使用诸如 saxon:parse-html() 之类的扩展来实现,它接受 HTML 输入并将其转换为某些“等效”XML 的树表示形式。