获取XML节点的孩子与XML标签一起

问题描述:

我有以下的输入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。

这里的关键是使用<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>