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

时间:2014-08-26 14:47:33

标签: 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="/*/xhtml:myelement" />
  </p>
</div>

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>

我得到的输出是HTML本身(作为文本),因此它仍然被转义,因此不会被解释为HTML:

这是一个标题

这是来自XML的内容:
&lt; p&gt;这里是一些带有特殊字符&amp;#776的文字;和&amp;#187;但实际上任何有效的html都可以像XML一样存储。&lt; / p&gt; &lt; h2&gt; XML&lt; / h2&gt;中的H2标题 &lt; p&gt;并再次提供一些文字&lt; / p&gt;

所以我的问题是:我如何编写XSL代码,以便将XML中的文本复制为实际HTML而不是TEXT?

1 个答案:

答案 0 :(得分:0)

而不是:

<xsl:copy-of select="ns0:myelement" />

尝试:

<xsl:value-of select="ns0:myelement" disable-output-escaping="yes"/>