1

我正在尝试在我的 ServiceMix 模块中使用 XLST 中的数组。

这是我的数组定义

<attr:Data>
    <Item1/>
    <Item2/>
    .
    .
    .
</attr:Data>

这就是我调用数组的方式

<xsl:for-each select="document('')/*/attr:Data/*">
...
</xsl:for-each>

它在 Eclipse 中运行良好,但是当我在 ServiceMix 中部署它时,我得到一个 include href 是空的 TransformerException。我尝试了 net.sf.saxon.trans.XPathException 和 org.apache.xalan.processor.TransformerFactoryImpl 处理器,我得到了同样的错误。我使用的 ServiceMix 版本是 4.4.1-fuse-01-13。

4

1 回答 1

0

我不知道 ServiceMix,但它看起来好像没有设置样式表的基本 URI,这意味着 document('') 不起作用。如果您无法更改 ServiceMix 调用转换的方式,那么您最好的选择可能是将数据放入全局变量中:

<xsl:variable name="data">
<attr:Data>
    <Item1/>
    <Item2/>
    .
    .
    .
</attr:Data>
</xsl:variable>

and access it as select="$data/attr:Data/*" if using Saxon (XSLT 2.0) or as select="xx:node-set($data)/attr:Data/*" if using Xalan (XSLT 1.0)

于 2012-06-06T11:17:23.683 回答