如何使用XSLT获取数组元素

时间:2013-07-22 23:29:47

标签: arrays xslt xpath

我正在尝试创建一个XSLT函数,它接受一个数组和一个整数(表示一个位置)并返回给定位置的元素。这就是我到目前为止所做的:

<xsl:function name="getArrayPosition" as="item()*">
  <xsl:param name="position"/>
  <xsl:param name="srcCodesArray" as="item()*"/>
  <xsl:value-of select="$srcCodesArray[$position]"/>
</xsl:function>

我的输入将非常简单,例如

<srcCodes>
  <item>Test1</item>
  <item>Test2</item>
</srcCodes>

1 个答案:

答案 0 :(得分:2)

如果您传入xs:integer,那么您的代码应该可以根据其位置选择项目。但我建议简单地声明该类型的变量,例如。

<xsl:param name="position" as="xs:integer"/>

(将名称空间声明xmlns:xs="http://www.w3.org/2001/XMLSchema"放在xsl:stylesheet上),即使传入的字符串值可以转换为整数或字符串值为的节点,它也应该有效转换为整数。

当然,执行<xsl:value-of select="$srcCodesArray[$position]"/>不会返回项本身,而是创建一个带有项的字符串值的文本节点。所以你想要

<xsl:sequence select="$srcCodesArray[$position]"/>

代替。

最后我建议学习并使用正确的术语,XSLT / XPath / XQuery数据模型没有任何数组,它有序列