Java 以节点集作为外部参数的XSLT

Java 以节点集作为外部参数的XSLT,java,xslt,Java,Xslt,我正在将XML节点传递给我的JAVA transformer: transformer.setParameter("orset", qRes); qRes的内容与此类似: <DOCTYPES> <SUBTYPE>Passport</SUBTYPE> <DOCTYPE>Proof of identity</DOCTYPE> </DOCTYPES> <DOCTYPES> <SUBTYP

我正在将XML节点传递给我的JAVA transformer:

transformer.setParameter("orset", qRes);
qRes的内容与此类似:

<DOCTYPES>
    <SUBTYPE>Passport</SUBTYPE>
    <DOCTYPE>Proof of identity</DOCTYPE>
</DOCTYPES>
<DOCTYPES>
    <SUBTYPE>Driving License</SUBTYPE>
    <DOCTYPE>Proof of address</DOCTYPE>
</DOCTYPES>

护照
身份证明
驾驶执照
地址证明
我在XSL文件中声明了一个全局参数:

<xsl:param name="orset"/>

我是否可以从参数中访问特定值,如下所示:

<xsl:for-each SELECT="$orset/DOCTYPES">
<xsl:value-of select="$orset/DOCTYPES/DOCTYPE"/>
...

...
或者正确的做法是什么


非常感谢

最好使用eXslt节点集函数

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:exsl="http://exslt.org/common"
  extension-element-prefixes="exsl"
  version="1.0">
 ...
 <xsl:value-of select="exsl:node-set($orset)/DOCTYPES"/>
  ...
</xsl:stylesheet>

...
...
基于您的处理器等,还有其他可用的节点集函数,它们都列在下面的参考中


只要XSLT处理器提供正确的API,就可以将任何XPath/Infoset/XDM实例作为参数传递给XSLT样式表。我正在xls文件中进行一些测试,为了能够使用节点集,我必须将样式表版本更改为2.0。“您可能想知道node-set()是否函数将成为这些标准的一部分。答案是否定的,但不要担心。XSLT2.0的作者做出了一个重要决定:结果树片段消失了。不需要使用node-set()函数在XSLT 2.0中的作用,因为您可以直接对存储在变量中的XML片段进行操作,就像对任何其他节点集进行操作一样。无论如何,您应该将node-set()函数放在工具包中,因为XSLT 2.0的部署将需要几年的时间,才能像XSLT 1.0今天的部署一样广泛。”我阅读了这一部分。我现在使用的是节点集,但仍然必须将样式表的版本更改为2.0。它现在起作用了,但我不确定影响是什么。