生成HTML的XSL无法从XML插入HTML片段

生成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

我想要达到的目标:

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="/*/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>&lt;p>here is some text with a special character &amp;#776; and &amp;#187; but actually any valid html can be stored like this in XML.&lt;/p>&lt;br/>  
    &lt;h2>an H2 title in the XML&lt;/h2>
    &lt;p>and again some text&lt;/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"/>