XSL转换 - 删除父节点

时间:2009-10-19 20:36:46

标签: soap xslt parent

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns="urn:enterprise.soap.sforce.com">
 <soapenv:Body>
  <upsertResponse>
   <result>
    <created>true</created>
    <id>0011</id>
    <success>true</success>
   </result>
   <result>
    <created>false</created>
    <id>0012</id>
    <success>true</success>
   </result>
  </upsertResponse>
 </soapenv:Body>
</soapenv:Envelope>

**How can I transform this to** 

<upsertResponse>
 <result>
  <created>true</created>
  <id>0011</id>
  <success>true</success>
 </result>
 <result>
  <created>false</created>
  <id>0012</id>
  <success>true</success>
 </result>
</upsertResponse>

2 个答案:

答案 0 :(得分:1)

这是一个XSL示例,它接受root的第一个子节点的第一个子节点并使其成为新XML的根节点:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

     <xsl:template match="/">
          <xsl:copy-of select="./*[1]/*[1]/*[1]" />
     </xsl:template>

</xsl:stylesheet>

请注意,您只能使用一个节点而不是多个节点,因为将少数节点作为XML的根目录放置无效。

答案 1 :(得分:0)

使用&lt; xsl:match&gt;选择&lt; upsertResponse&gt;元素,然后放一个&lt; xsl:copy&gt;在里面。这应该够了吧。对不起,我没有确切的语法,但希望这可以指出你正确的方向。