我正在尝试创建一个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>
答案 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数据模型没有任何数组,它有序列。