生成HTML的XSL无法从XML插入HTML片段
我想要达到的目标: 1 XSL文件基于XSLT生成HTML输出。 输出HTML的一部分存储在XML中。所以您需要从XML中读取该部分,并将其与XSL直接生成的其他内容一起插入(合并) 示例代码XSL:生成HTML的XSL无法从XML插入HTML片段,xml,xslt,Xml,Xslt,我想要达到的目标: 1 XSL文件基于XSLT生成HTML输出。 输出HTML的一部分存储在XML中。所以您需要从XML中读取该部分,并将其与XSL直接生成的其他内容一起插入(合并) 示例代码XSL: <div> <h1>This is a title</h1> <p>And this is the content coming from XML:<br/> <xsl:copy-of select="/*/xhtm
<div>
<h1>This is a title</h1>
<p>And this is the content coming from XML:<br/>
<xsl:copy-of select="/*/xhtml:myelement" />
</p>
</div>
这是一个标题
这是来自XML的内容:
而XML如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<z:article xmlns:ns0="http://www.w3.org/1999/xhtml">
<ns0:myelement><p>here is some text with a special character &#776; and &#187; but actually any valid html can be stored like this in XML.</p><br/>
<h2>an H2 title in the XML</h2>
<p>and again some text</p>
</ns0:myelement>
</z:article>
p> 下面是一些带有特殊字符的文本&#776; 及#187; 但实际上,任何有效的html都可以像这样存储在XML中。/p>br/>
h2>XML中的h2标题/h2>
p> 还有一些文本/p>
我得到的输出是HTML本身(作为文本),因此它仍然是转义的,因此不会被解释为HTML:
这是一个标题
这是来自XML的内容:这是一些带有特殊字符的文本̈;和»;但实际上,任何有效的html都可以像这样存储在XML中 XML中的H2标题 还有一些文字 因此,我的问题是:如何编写XSL代码,以便将XML中的文本复制为实际HTML而不是文本?而不是:
<xsl:copy-of select="ns0:myelement" />
尝试:
@basZero“不工作”不是问题的好描述。它适合我(请参阅:),但我使用格式良好的XML作为输入(与您发布的内容不同)。如果html格式良好,它也可以工作,我也进行了测试。但是HTML在XML@basZero恐怕您完全没有抓住要点:您发布的XML代码格式不正确,因为z:
前缀没有绑定到名称空间。因此,我已将其删除。我不知道HTML的格式是否正确,这并不重要;我相信,这里的目的是返回未被替换的HTML代码——这正是这里产生的结果。你看过我在上一篇评论中提供的链接了吗?@michel我看过你的代码,需要比较一下,因为你的例子真的很有用。。。我希望看到我的例子也能起作用。。。必须分析差异我现在更改了您的示例,使其几乎反映了我们的实现()。仍然:它可以工作,但在我自己的项目中不行。在您的myelement
的XML中,您是转义HTML还是将HTML作为HTML提供?如果是前者,那么它将被复制到转义上。@Bob:XML中的HTML被转义,如我的问题所示。如果它不会被转义,它会工作,但我不能改变它,因为它来自一个我无法影响的来源。然后,你拥有的不是HTML。XSLT中没有一个函数可以“反转义”转义的源。您可能需要使用一个预处理程序来删除转义,以便将其插入到输出中。@BobDalgleish嗨,Bob,听起来很合理。但是,它还可以处理转义的HTML代码。。。也许你看到了与我的例子不同的东西,我看到了你正在演示的东西。该解决方案的关键功能是@michael.hor257k所描述的值
和禁用输出转义
。
<xsl:value-of select="ns0:myelement" disable-output-escaping="yes"/>