2013-03-18 78 views
1

我有以下的輸入XML獲取XML節點的孩子與XML標籤一起

<?xml version="1.0" encoding="UTF-8"?> 
<Parent> 
    <ParentElement1>PE1</ParentElement1> 
    <ParentElement2>PE2</ParentElement2> 
    <Child> 
    <ChildElement1>CE1</ChildElement1> 
    <ChildElement2>CE2</ChildElement2> 
    </Child> 
</Parent> 

我需要提取孩子現在裏面父母,

輸出必須是這樣的:

<Child> 
    <ChildElement1>CE1</ChildElement1> 
    <ChildElement2>CE2</ChildElement2> 
</Child>` 

我已嘗試使用XPath表達式/Parent/Child, ,但它僅選擇文本CE1 & CE2。

回答

1

這裏的關鍵是使用<xsl:copy-of>而不是<xsl:value-of>

從XSL規格:The xsl:copy-of element can be used to copy a node-set over to the result tree without converting it to a string.

使用以下樣式:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> 
<xsl:output method="xml" indent="yes" /> 
<!-- To get rid of <?xml ... declaration, use the following: 
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes" /> --> 

<xsl:template match="/"> 
    <!-- use copy-of instead of value-of --> 
    <xsl:copy-of select="/Parent/Child" /> 
</xsl:template> 

</xsl:stylesheet> 

輸出:

<?xml version="1.0" encoding="UTF-8"?> 
<Child> 
    <ChildElement1>CE1</ChildElement1> 
    <ChildElement2>CE2</ChildElement2> 
</Child>