可以在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