XSLT 2.0:声明字符串数组

时间:2015-11-12 15:48:53

标签: xslt

是否可以在XSLT 2.0中声明一个字符串数组?

我想声明如下内容:

<xsl:variable name="countries" select="('IT','EN','SP')" />

但不起作用。

感谢。

1 个答案:

答案 0 :(得分:1)

XSLT / XPath 2.0使用的数据模型中没有数组。您的代码<xsl:variable name="countries" select="('IT','EN','SP')" />将一系列字符串值绑定到名为countries的变量,您应该能够访问具有位置谓词的单个项目,例如$countries[2]

如果您认为需要数组,那么您需要使用XPath 3.1,您可以使用<xsl:variable name="countries" select="['IT', 'EN', 'SP']"/>,请参阅http://www.w3.org/TR/xpath-31/#id-arrays。我不知道任何已发布的XSLT处理器支持这一点,但是,我认为像BaseX这样的XQuery实现已经升级为支持它。

只要您只想在平面数据类型中存储三个或更多原子值,我就不明白为什么您需要新的数组功能,序列('IT','EN','SP')就足够了。数组可以是嵌套的,而不是序列,因为(1, (2, 3), 4)会产生一个平坦的序列(1, 2, 3, 4),所以如果你需要一个嵌套的数据结构(带有像数字或字符串这样的原始值),你可能需要一个数组并拥有要等到支持XPath 3.1,您可以随时为当前版本的XSLT中的嵌套数据创建XML树结构。