2016-08-12 108 views
0

我有以下输入XML:移动类似的节点到新节点使用XSLT

<?xml version="1.0" encoding="UTF-8"?> 
<response> 
    <PQGetCareGaps> 
     <METHOD>GET</METHOD> 
     <contract>HXXXX</contract> 
    </PQGetCareGaps> 
    <FinalCareGapResults> 
     <Gap> 
     <CareGap>Colorectal Cancer Screening</CareGap> 
     <GapHistory> 
      <row> 
       <MEMBERID>AAAAAA000016-00</MEMBERID> 
      </row> 
     </GapHistory> 
     </Gap> 
    </FinalCareGapResults> 
    <FinalCareGapResults> 
     <Gap> 
     <CareGap>Adult BMI Assessment</CareGap> 
     </Gap> 
    </FinalCareGapResults> 
</response> 

我想修改上面的XML以这样的方式,所有的<Gap>节点应该来一个名为<TestResults>新的节点下。由此产生的xml应该如下所示:

<?xml version="1.0" encoding="UTF-8"?> 
<response> 
    <PQGetCareGaps> 
     <METHOD>GET</METHOD> 
     <contract>HXXXX</contract> 
    </PQGetCareGaps> 
    <TestResults> 
     <Gap> 
     <CareGap>Colorectal Cancer Screening</CareGap> 
     <GapHistory> 
      <row> 
       <MEMBERID>AAAAAA000016-00</MEMBERID> 
      </row> 
     </GapHistory> 
     </Gap> 
     <Gap> 
     <CareGap>Adult BMI Assessment</CareGap> 
     </Gap> 
    </TestResults> 
</response> 

你能帮我吗?

回答

0

试试这个

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    exclude-result-prefixes="xs" 
    version="1.0"> 
    <xsl:template match="/"> 
     <xsl:apply-templates select="response" /> 
    </xsl:template> 
    <xsl:template match="response"> 
     <response> 
     <xsl:copy-of select="PQGetCareGaps" /> 
     <TestResults> 
     <xsl:for-each select="FinalCareGapResults/Gap"> 
      <xsl:copy-of select="." />   
     </xsl:for-each> 
     </TestResults> 
     </response> 
    </xsl:template> 
</xsl:stylesheet>