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 に答える