1

我正在尝试创建一个 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>
4

1 回答 1

2

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

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

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

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

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

反而。

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

于 2013-07-23T08:52:57.187 回答