是否可以在XSLT 2.0中声明一个字符串数组?
我想声明如下内容:
<xsl:variable name="countries" select="('IT','EN','SP')" />
但不起作用。
感谢。
答案 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树结构。