我有点担心一些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中读取文本文件并将内容设置为样式表的参数。可悲的是
正在将过程中的符号翻译为&amp; lt和&amp; gt ...因此,html代码被搞砸了。有没有机会强制样式表不转换它们?
THX!
答案 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的树形表示。