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

时间:2011-05-12 10:01:06

标签: java html 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>

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

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

<h3>Part One</h3>

现在我的问题:如何将HTML代码作为HTML代码从文本文件插入到生成的html文件中。我知道,上面的代码不会起作用,因为我只在得到的插入文本中得到&amp; gt,&amp; lt。

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

有人有想法吗?

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

  • &LT;
  • &GT;

正在将过程中的符号翻译为&amp; lt和&amp; gt ...因此,html代码被搞砸了。有没有机会强制样式表不转换它们?

THX!

3 个答案:

答案 0 :(得分:1)

您可以使用可以读取外部文件的unparsed-text()函数。 或者,如果您知道外部文件是有效的xml,您也可以使用document()函数。 然而,我认为XSLT 2.0都起作用。

答案 1 :(得分:1)

您的html文件格式正确吗?

您可以尝试在xsl中使用'copy-of'。

<p><xsl:copy-of select="document('yourHtmlDoc.html')"/></p>

如果你需要html文件中的特定项目,你甚至可以设置一个路径,因为你的html格式正确。

<xsl:copy-of select="document('yourHtmlDoc.html')/tagsNeeded"/>

答案 2 :(得分:0)

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

第一种方法 - 将其视为文本 - 可以使用disable-output-escaping来实现,前提是(a)您的处理器支持它,以及(b)您使用处理管道,其中转换后立即进行序列化。 / p>

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