2012-11-13 26 views
2

我有一個XSL一個小問題:複製的,因爲我只想節點的複製內容,而不是節點本身:XSL:複製的僅僅是內容,而節點

在XML :

<parent>  
    <node>Hello, I'm a <b>node</b>!!!</node> 
</parent> 

在XSL:

<xsl:template match="parent"> 
    <tr> 
     <td><xsl:copy-of select="node"/></td> 
    </tr> 
</xsl:template> 

其結果是:

<tr> 
    <td><node>Hello, I'm a <b>node</b>!!!</node></td> 
</tr> 

預期的結果:

<tr> 
    <td>Hello, I'm a <b>node</b>!!!</td> 
</tr> 

的問題是,如果我使用xsl:value-of,我鬆<b></b>

回答

5

你可以使用

<xsl:copy-of select="node/node()" /> 

這看起來有點奇怪,因爲該元素的名稱也node但什麼node()選擇確實是選擇所有子元素,文本節點,註釋節點和處理指令從相應的內節點(在這種情況下,當前上下文元素中稱爲node的所有子元素)。

node()沒有選擇屬性,所以如果你開始

<parent>  
    <node attr="foo">Hello, I'm a <b>node</b>!!!</node> 
</parent> 

然後<td><xsl:copy-of select="node/node()"/></td>會產生

<td>Hello, I'm a <b>node</b>!!!</td> 

相反,如果你說<td><xsl:copy-of select="node/node() | node/@*"/></td>,那麼你會得到

<td attr="foo">Hello, I'm a <b>node</b>!!!</td> 
相關問題