简体   繁体   English

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

[英]Is it possible to parse XML wrapped in CDATA using FOP 0.95 and exsl:node-set() function?

Good day, please advise. 美好的一天,请告知。 I'm using FOP 0.95 (version 1.0) and EXSL extensions. 我正在使用FOP 0.95(1.0版)和EXSL扩展。 I have this XML: 我有这个XML:

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

Is there a way how to parse the string in CDATA using exsl:node-set() function? 有没有办法使用exsl:node-set()函数解析CDATA中的字符串? Following code outputs "<details><weight>0.5kg</weight><colour>Red</colour></details>" instead of "0.5kg Red" which means it is not parsed but handled as a string: 以下代码输出“ <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"/>

The answer is no. 答案是不。 Content wrapped in a CDATA section is not parsed as XML markup. 包装在CDATA节中的内容不会解析为XML标记。 That is the whole point of CDATA sections. 这就是CDATA部分的重点。 Using exsl:node-set() does not help. 使用exsl:node-set()没有帮助。

The question has nothing to do with XSL-FO. 这个问题与XSL-FO无关。 FOP is an XSL-FO processor, not an XML parser. FOP是XSL-FO处理器,而不是XML解析器。 It makes use of an XML parser of course, but that does not affect this answer. 它当然利用了XML解析器,但这并不影响此答案。 FOP is also not an XSLT processor; FOP也不是XSLT处理器。 even though it can do XSLT transformations, an actual XSLT processor does the real work "behind the scenes". 即使可以执行XSLT转换,实际的XSLT处理器也会在“幕后”进行实际工作。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM