2009-11-20 42 views
2

我需要:我想深入複製單個選定節點的所有子節點,而不實際複製它。示例:從XSLT:深層子版本

<father><son i="1" /><son i="2" /><son i="0"><lastNode /></son></father> 

我希望提取

<son i="1" /><son i="2" /><son i="0"><lastNode /></son> 

我知道,我可以換一個每一個週期,然後做這XSL:複製的。我想知道是否有一個更簡單的表達式來實現相同的結果。一些想法?

後續行動。我的問題錯過了幾點。我應該說所有孩子都是「所有可能的孩子」,包括文本節點;另一個證明更好的問題已經包含答案。其次,我從你身上學到了什麼 - 社區 - 是我足夠愚蠢,試圖用XSL來解決事實上更多的是XPATH問題。感謝大家對此的瞭解

乾杯。

+0

如果是文檔元素,此深拷貝不會產生良好的XML文檔。 – Erlock 2009-11-20 14:16:19

回答

3

嘗試選擇所有的孩子..

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:template match="/"> 
    <xsl:copy-of select="father/*"/> 
</xsl:template> 
</xsl:stylesheet> 

E.G. 鑑於輸入

<father><son i="1" /><son i="2" /><niceSon /><son i="0"><lastNode /></son></father> 

它輸出

<son i="1" /><son i="2" /><niceSon /><son i="0"><lastNode /></son> 
0

使用例如<xsl:copy-of select="father/son"/>

+0

我的錯:我的例子有誤導性。您的解決方案只適用於兒童是。如果您有這不再有效 – Daniel 2009-11-20 09:12:29

3
<xsl:copy-of select="father/node()" /> 
+1

這將匹配除屬性節點以外的所有節點。 – mikesub 2009-11-20 10:10:41

+1

您的評論有用。首先,我忽略了你提出的解決方案與Codemeit提出的解決方案之間的區別;但事實上,當您需要複製文本節點時,您的解決方案是正確的。例如:如果我需要轉換爲html,如: Bla bla bla 我說bla! etc.等然後做我真正的意思,而oter解決方案只保留我說bla!。好消息是我們有一些東西需要學習...... – Daniel 2009-11-20 16:33:03