1

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

4

1 回答 1

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>
于 2013-03-18T12:25:55.347 回答