XML文档包含另一个XML元素,它包含在CDATA中。
如何将包装好的XML用于XSL和XSL-FO转换(版本1)?
答案 0 :(得分:2)
如果您愿意采取多个转换步骤,那么就有可能。使用disable-output-escaping输出相关部分,以将转义的XML转换为有效的XML。在后续步骤中处理它。
它确实要求转义的XML格式正确。并且一些解析器需要首先将中间结果序列化(到磁盘或其他),以确保转义的XML在进入后续转换之前被正确转义。
答案 1 :(得分:1)
在单个转换中,标准XSLT 1.0或2.0无法实现这一点。
可以使用Saxon 9 Professional Edition或Enterprise Edition完成。这些产品具有saxon:parse()
扩展功能。或者使用XPath 3.0 parse-xml()
函数,最近版本的Saxon PE / EE也支持该函数。
正如@grtjn指出的那样,可以通过两遍过程来完成。样式表1将CDATA包装的文本转换为可解析的XML(使用<xsl:value-of select="whatever" disable-output-escaping="yes"/>
)。然后,样式表2处理样式表1生成的序列化结果。