Xslt 如何在另一个XML中使用CDATA包装的XML进行XSL转换?
XML文档包含另一个XML元素,它被包装在CDATA中Xslt 如何在另一个XML中使用CDATA包装的XML进行XSL转换?,xslt,xslt-1.0,cdata,Xslt,Xslt 1.0,Cdata,XML文档包含另一个XML元素,它被包装在CDATA中 如何将包装好的XML用于XSL和XSL-FO转换(第1版)?对于标准XSLT 1.0或2.0,在单个转换中是不可能的 可以使用Saxon 9专业版或企业版完成。这些产品具有扩展功能。或者使用该函数,Saxon PE/EE的最新版本也支持该函数 正如@grtjn所指出的,可以通过两个过程来完成。样式表1将CDATA包装的文本转换为可解析的XML(使用)。然后,样式表2处理样式表1生成的序列化结果。如果您愿意执行多个转换步骤,则是可能的。使用
如何将包装好的XML用于XSL和XSL-FO转换(第1版)?对于标准XSLT 1.0或2.0,在单个转换中是不可能的 可以使用Saxon 9专业版或企业版完成。这些产品具有扩展功能。或者使用该函数,Saxon PE/EE的最新版本也支持该函数
正如@grtjn所指出的,可以通过两个过程来完成。样式表1将CDATA包装的文本转换为可解析的XML(使用
)。然后,样式表2处理样式表1生成的序列化结果。如果您愿意执行多个转换步骤,则是可能的。使用“禁用输出转义”输出相关部分,以将转义的XML转换为有效的XML。在后续步骤中对其进行处理
它确实要求转义的XML格式良好。有些解析器要求首先将中间结果序列化(到磁盘或其他位置),以确保转义的XML在进入后续转换之前正确地取消转义。应该可以在第二次转换中完成,正如。不是吗?请记住,这两个过程步骤是如何联系在一起的可能会有所不同。我见过两个XSLT步骤在Java中通过SAX事件连接的情况,但结果是取消跳过被延迟到序列化,因此后续XSLT无法访问取消跳过的XML。@grtjn:Yes,必须序列化结果树才能工作
disable output escaping=“Yes”
。