XSLT支持其匹配模板的不同模式。处理以默认的未命名模式启动,但可以随每次调用<xsl:apply-templates/>
而更改。但是,我希望以非默认模式启动XSLT处理。
我目前使用的代码使用一个javax.xml.transform.Transformer
实例来加载XSLT样式表并执行转换。这种方法是否可以在Java中指定我希望从哪种模式开始转换?我找不到任何东西。如果重要的话,样式表本身在XSLT2.0版本中。
我知道,通过调用net.sf.saxon.s9api.XsltTransformer.setInitialMode(QName)
,Saxon是可能的,但我要求使用javax.xml.transform.Transformer
内建解决方案的任何解决方案。
发布于 2020-01-06 10:41:45
JAXP接口是为XSLT1.0设计的,它不允许您选择非默认的初始模式。
Saxon包括JAXP接口的各种扩展,以绕过这些限制:将JAXP Transformer
转换为net.sf.saxon.jaxp.TransformerImpl
并调用setInitialMode()
。
但是,一旦您开始使用JAXP接口的Saxon扩展,就没有什么理由比Saxon的原生s9api接口更喜欢JAXP了--特别是当您开始使用XSLT3.0功能时,Saxon根本不通过JAXP提供这种功能。
https://stackoverflow.com/questions/59609817
复制相似问题