[英]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.