可以在xslt中创建和使用数组吗?如果是的话,是否有适合在线学习的例子?如果没有,有没有一种方式来存储模拟数组的方式?在xslt中创建数组
回答
使用XSLT 2.0,您可以建模任何您想要的数据类型。
作为例子:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" omit-xml-declaration="yes"/>
<xsl:variable name="array" as="element()*">
<Item>A</Item>
<Item>B</Item>
<Item>C</Item>
</xsl:variable>
<xsl:template match="/">
<xsl:value-of select="$array[2]"/>
</xsl:template>
</xsl:stylesheet>
与任一输入,输出:
B
在XSLT 1.0有不Temporaly结果树数据类型。有一个Result Tree Fragment数据类型不允许节点集操作符。所以,唯一的办法是使用扩展功能:在这种情况下,来自EXSLT的node-set()
(MSXSL也有一个内置的node-set()
扩展)。
因此,在没有扩展的XSLT 1.0中,您可以只有内联数据模型,或者通过参数或外部文档。作为例子:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" omit-xml-declaration="yes"/>
<xsl:variable name="inline-array">
<Item>A</Item>
<Item>B</Item>
<Item>C</Item>
</xsl:variable>
<xsl:param name="array" select="document('')/*/xsl:variable[@name='inline-array']/*"/>
<xsl:template match="/">
<xsl:value-of select="$array[2]"/>
</xsl:template>
</xsl:stylesheet>
结果,任何输入:
B
只有当你想要,我可以为您提供一个XSLT 1.0加扩展例子(这不是STANDAR ...)
不,不是这样。最接近的概念是节点集,它是节点的集合。只要选择的结果是多个节点,就会得到一个节点集。可以使用索引符号(从1开始)访问它们,因此节点集的第一个元素可以使用符号(如selectedNodes[1]
)进行访问。
我认为这不完全正确。检查我的答案。 – 2010-07-21 14:14:31
中的XPath 2.0序列(在XSLT 2+可用)是最接近阵列:
(1 to 10)[3]
计算结果为3
('a', 'b', 'a', 'c')[3]
评估为'a'
的序列的项可以是允许在XPath中任何可想到的类型,具有序列自身的异常 - 嵌套序列是不允许的。
请注意:序列是不一样的阵列:
序列是不可改变的。序列上的任何更新操作(追加或预先添加项目,插入项目或移除项目)都会生成新的序列。
对于第n项的访问时间不能保证为O(1),因为这是针对数组的,可能是O(n)。
+1好答案!后来我意识到我忘记了序列数据类型。我错过了捍卫数据建模的想法。 – 2010-07-21 18:50:59
@Alejandro:什么是“数据建模”? :) – 2010-07-21 19:39:22
对不起,我的英语。我应该说抽象数据类型。 – 2010-07-21 20:04:57
- 1. XSLT:在XSLT中创建映射
- 2. 在Coldfusion中创建数组
- 3. 创建数组在Java中
- 4. 在cellForRowInIndexPath中创建数组
- 5. 在smlnj中创建数组
- 6. 在Javascript中创建数组
- 7. 在C++中创建数组
- 8. 在swift中创建数组
- 9. 表格XML创建在XSLT
- 10. 如何在XSLT中创建页码?
- 11. 在XSLT中创建嵌套循环
- 12. 创建使用XSLT
- 13. 创建xslt文件
- 14. PHP在数组中创建组合
- 15. xslt - 使用xslt创建空文件1.0
- 16. 创建数组
- 17. 从数组创建数组
- 18. 如何添加数据到在XSLT中创建的元素
- 19. 如何在xml或xslt或xpath中创建数据库
- 20. 使用.NET XSLT处理器创建自定义XSLT函数
- 21. 在C++中创建无限数组
- 22. 在codeigniter中创建json数组
- 23. 在json.Net中创建名为子数组
- 24. 在Wordpress Widget中创建多维数组
- 25. 在Excel VBA中创建多行数组?
- 26. 在MongoDB中创建唯一的数组
- 27. 在c中创建动态数组#
- 28. 如何在java中创建3D数组?
- 29. 在javascript中创建2d数组
- 30. 在JavaScript中创建数组与Html.action
好问题(+1)。请参阅我的答案,以获取与XPath(和XSLT)数据类型最接近的详细描述。 – 2010-07-21 16:16:47