是否可以使用FOP 0.95和exsl:node-set()函数解析CDATA中包装的XML?

时间:2012-05-30 09:43:56

标签: xml xslt xslt-1.0 cdata

美好的一天,请指教。我正在使用FOP 0.95(版本1.0)和EXSL扩展。我有这个XML:

<List>
  <Item>
    <Details><![CDATA[<details><weight>0.5kg</weight><colour>Red</colour></details>]]></Details>
  </Item>
</List>

有没有办法使用exsl:node-set()函数解析CDATA中的字符串?以下代码输出“&lt; details&gt;&lt; weight&gt; 0.5kg&lt; / weight&gt;&lt; color&gt; Red&lt; / color&gt;&lt; / details&gt;”而不是“0.5kg红色”,这意味着它没有被解析,而是作为一个字符串处理:

<xsl:variable name="txtDetails" select="/List/Item/Details"/>
<xsl:variable name="details" select="exsl:node-set($txtDetails)"/>
<xsl:value-of select="$details"/>

1 个答案:

答案 0 :(得分:1)

答案是否定的。包含在CDATA部分中的内容不会被解析为XML标记。这是CDATA部分的重点。使用exsl:node-set()无济于事。

这个问题与XSL-FO无关。 FOP是一个XSL-FO处理器,而不是XML解析器。它当然使用XML解析器,但这不会影响这个答案。 FOP也不是XSLT处理器;即使它可以进行XSLT转换,实际的XSLT处理器也能在“幕后”完成真正的工作。