0

美好的一天,请指教。我正在使用 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 中的字符串?以下代码输出“<details><weight>0.5kg</weight><colour>Red</colour></details>”而不是“0.5kg Red”,这意味着它不会被解析而是作为字符串处理:

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

1 回答 1

1

答案是不。包装在 CDATA 部分中的内容不会被解析为 XML 标记。这就是 CDATA 部分的重点。使用exsl:node-set()没有帮助。

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

于 2012-05-30T17:16:31.957 回答