XML文档包含另一个XML元素,该元素封装在CDATA中。
如何将封装的XML用于XSL和XSL-FO转换(版本1)?
如果您愿意采取多个转换步骤,那么这是可能的。使用禁用输出转义输出相关部分,以将转义的XML转换为有效的XML。在后续步骤中进行处理。
它确实要求转义的XML格式正确。一些解析器要求首先将中间结果序列化(到磁盘或其他地方),以确保转义的XML在进入后续转换之前正确地取消了转义。
这在标准XSLT1.0或2.0的单个转换中是不可能的。
它可以使用Saxon 9专业版或企业版来完成。这些产品具有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生成的序列化结果。