2011年9月27日 星期二

[XML] The difference between value-of and copy-of

差別:

  • xsl:value-of returns all the TEXT within the selected tag(s).
  • xsl:copy-of returns all the ELEMENTS (both tags and text) of the selected tag(s).

一言以蔽之, value-of 只會回傳你選擇node裡面的text, 但是copy-of 卻是會把整個node structure都回傳回來.

例子:

<Name>
 <Family>Smith</Family>
 <Given>John</Given>
</Name>

XSLT:
<xsl:value-of select="Name"/> 

<!-- 輸出element Name下面的所有text -->

Output:
Smith
John

 

XSLT:

<xsl:value-of select="Name"/> 

輸出Name底下的所有element (包含tag)

Output:

<Name>

 <Family>Smith</Family>

 <Given>John</Given>

</Name>

 

XSLT:
<xsl:value-of select="Name/node()"/> 

輸出Name底下子節點的所有element (包含tag), 不包含自己

Output:

 <Family>Smith</Family>

 <Given>John</Given>

 

XSLT:

<xsl:value-of select="Name/text()"/> 
 輸出Name底下的text, 但是這邊沒有, 所以沒有輸出

Output:

Reference:
http://dev.ektron.com/blogs.aspx?id=10472