2017-10-04 5 views
1

私は同じ 「ANS:numeroGuiaOrigem」ですべてのノードを置くために、XSLTを使用してXMLをtranformする必要があるノード:同じ「opcaoRecursoGuia ANS」へと「numeroGuiaOperadora ANS」。新しいレイアウトにXSLTでXMLの変換

ソースxmlと必要なxmlの下に投稿しました。

私はxsltの初心者です。私はいくつかの論文を読みましたが、私はこの変換を成功させることができません。

誰かが私を助けることができますか?

マイXSLTである:

<xsl:transform 
    version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:ans="http://www.ans.gov.br/padroes/tiss/schemas"> 
    <xsl:output method="xml" encoding="UTF-8" indent="yes" /> 
    <xsl:strip-space elements="*" /> 

    <xsl:template match="@*|node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:copy> 
    </xsl:template> 

    <xsl:template match="ans:opcaoRecursoGuia"> 
    <xsl:copy> 
     <xsl:apply-templates select="@* | node()" /> 
     <xsl:for-each select=".//ans:itensGuia" > 
     <xsl:copy> 
      <xsl:copy-of select="ans:itensGuia" /> 
      </xsl:copy> 
     </xsl:for-each> 
    </xsl:copy> 
    </xsl:template> 
</xsl:transform> 

//ソース

<?xml version="1.0" encoding="ISO-8859-1"?> 
    <ans:mensagemTISS xmlns:ans="http://www.ans.gov.br/padroes/tiss/schemas" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ans.gov.br/padroes/tiss/schemas http://www.ans.gov.br/padroes/tiss/schemas/tissV3_02_00.xsd"> 
     <ans:cabecalho> 
     <ans:versaoPadrao>3.02.00</ans:versaoPadrao> 
     </ans:cabecalho> 
     <ans:prestadorParaOperadora> 
     <ans:recursoGlosa> 
      <ans:guiaRecursoGlosa> 
      <ans:registroANS>005711</ans:registroANS> 
      <ans:numeroGuiaRecGlosaPrestador>431089079</ans:numeroGuiaRecGlosaPrestador> 
      <ans:opcaoRecurso> 
       <ans:recursoGuia> 
       <ans:numeroGuiaOrigem>430912301</ans:numeroGuiaOrigem> 
       <ans:numeroGuiaOperadora>24000000000605290391</ans:numeroGuiaOperadora> 
       <ans:opcaoRecursoGuia> 
        <ans:itensGuia> 
        <ans:dataInicio>2017-06-23</ans:dataInicio> 
        <ans:dataFim>2017-06-23</ans:dataFim> 
        <ans:procRecurso> 
         <ans:codigoTabela>18</ans:codigoTabela> 
        </ans:procRecurso> 
        <ans:justificativaItem>VALOR CORRETO ATUAL -TAXA DE SALA UTILIZADA PARA PROCEDIMENTOS CONFORME ACORDO ENTRE PARTES-valor correto </ans:justificativaItem> 
        </ans:itensGuia> 
       </ans:opcaoRecursoGuia> 
       </ans:recursoGuia> 
       <ans:recursoGuia> 
       <ans:numeroGuiaOrigem>430912301</ans:numeroGuiaOrigem> 
       <ans:numeroGuiaOperadora>24000000000605290391</ans:numeroGuiaOperadora> 
       <ans:opcaoRecursoGuia> 
        <ans:itensGuia> 
        <ans:dataInicio>2017-06-23</ans:dataInicio> 
        <ans:dataFim>2017-06-23</ans:dataFim> 
        <ans:procRecurso> 
         <ans:codigoTabela>20</ans:codigoTabela> 
        </ans:procRecurso> 
        <ans:justificativaItem> com acrescimo de 38,24% contempla a remuneração pelos serviços de seleção,armazenamento,distribuição</ans:justificativaItem> 
        </ans:itensGuia> 
       </ans:opcaoRecursoGuia> 
       </ans:recursoGuia> 
       <ans:recursoGuia> 
       <ans:numeroGuiaOrigem>430912302</ans:numeroGuiaOrigem> 
       <ans:numeroGuiaOperadora>24000000000605290392</ans:numeroGuiaOperadora> 
       <ans:opcaoRecursoGuia> 
        <ans:itensGuia> 
        <ans:dataInicio>2017-06-23</ans:dataInicio> 
        <ans:dataFim>2017-06-23</ans:dataFim> 
        <ans:procRecurso> 
         <ans:codigoTabela>18</ans:codigoTabela> 
        </ans:procRecurso> 
        <ans:justificativaItem>VALOR CORRETO ATUAL -TAXA DE SALA UTILIZADA PARA PROCEDIMENTOS CONFORME ACORDO ENTRE PARTES-valor correto </ans:justificativaItem> 
        </ans:itensGuia> 
       </ans:opcaoRecursoGuia> 
       </ans:recursoGuia> 
       <ans:recursoGuia> 
       <ans:numeroGuiaOrigem>430912302</ans:numeroGuiaOrigem> 
       <ans:numeroGuiaOperadora>24000000000605290392</ans:numeroGuiaOperadora> 
       <ans:opcaoRecursoGuia> 
        <ans:itensGuia> 
        <ans:dataInicio>2017-06-23</ans:dataInicio> 
        <ans:dataFim>2017-06-23</ans:dataFim> 
        <ans:procRecurso> 
         <ans:codigoTabela>20</ans:codigoTabela> 
        </ans:procRecurso> 
        <ans:justificativaItem> com acrescimo de 38,24% contempla a remuneração pelos serviços de seleção,armazenamento,distribuição</ans:justificativaItem> 
        </ans:itensGuia> 
       </ans:opcaoRecursoGuia> 
       </ans:recursoGuia> 
       <ans:recursoGuia> 
       <ans:numeroGuiaOrigem>430912303</ans:numeroGuiaOrigem> 
       <ans:numeroGuiaOperadora>24000000000605290393</ans:numeroGuiaOperadora> 
       <ans:opcaoRecursoGuia> 
        <ans:itensGuia> 
        <ans:dataInicio>2017-06-23</ans:dataInicio> 
        <ans:dataFim>2017-06-23</ans:dataFim> 
        <ans:procRecurso> 
         <ans:codigoTabela>18</ans:codigoTabela> 
        </ans:procRecurso> 
        <ans:justificativaItem>VALOR CORRETO ATUAL -TAXA DE SALA UTILIZADA PARA PROCEDIMENTOS CONFORME ACORDO ENTRE PARTES-valor correto </ans:justificativaItem> 
        </ans:itensGuia> 
       </ans:opcaoRecursoGuia> 
       </ans:recursoGuia> 
       <ans:recursoGuia> 
       <ans:numeroGuiaOrigem>430912303</ans:numeroGuiaOrigem> 
       <ans:numeroGuiaOperadora>24000000000605290393</ans:numeroGuiaOperadora> 
       <ans:opcaoRecursoGuia> 
        <ans:itensGuia> 
        <ans:dataInicio>2017-06-23</ans:dataInicio> 
        <ans:dataFim>2017-06-23</ans:dataFim> 
        <ans:procRecurso> 
         <ans:codigoTabela>20</ans:codigoTabela> 
        </ans:procRecurso> 
        <ans:justificativaItem> com acrescimo de 38,24% contempla a remuneração pelos serviços de seleção,armazenamento,distribuição</ans:justificativaItem> 
        </ans:itensGuia> 
       </ans:opcaoRecursoGuia> 
       </ans:recursoGuia> 
       <ans:recursoGuia> 
       <ans:numeroGuiaOrigem>430912304</ans:numeroGuiaOrigem> 
       <ans:numeroGuiaOperadora>24000000000605290394</ans:numeroGuiaOperadora> 
       <ans:opcaoRecursoGuia> 
        <ans:itensGuia> 
        <ans:dataInicio>2017-06-27</ans:dataInicio> 
        <ans:dataFim>2017-06-27</ans:dataFim> 
        <ans:procRecurso> 
         <ans:codigoTabela>18</ans:codigoTabela> 
        </ans:procRecurso> 
        <ans:justificativaItem>VALOR CORRETO ATUAL -TAXA DE SALA UTILIZADA PARA PROCEDIMENTOS CONFORME ACORDO ENTRE PARTES-valor correto </ans:justificativaItem> 
        </ans:itensGuia> 
       </ans:opcaoRecursoGuia> 
       </ans:recursoGuia> 
      </ans:opcaoRecurso> 
      </ans:guiaRecursoGlosa> 
     </ans:recursoGlosa> 
     </ans:prestadorParaOperadora> 
    </ans:mensagemTISS> 

//これを実行するため<xsl:key>を用いて達成することができるmuenchian-groupingの場合である

<?xml version="1.0" encoding="ISO-8859-1"?> 
<ans:mensagemTISS xmlns:ans="http://www.ans.gov.br/padroes/tiss/schemas" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ans.gov.br/padroes/tiss/schemas http://www.ans.gov.br/padroes/tiss/schemas/tissV3_02_00.xsd"> 
    <ans:cabecalho> 
    <ans:versaoPadrao>3.02.00</ans:versaoPadrao> 
    </ans:cabecalho> 
    <ans:prestadorParaOperadora> 
    <ans:recursoGlosa> 
     <ans:guiaRecursoGlosa> 
     <ans:registroANS>005711</ans:registroANS> 
     <ans:numeroGuiaRecGlosaPrestador>431089079</ans:numeroGuiaRecGlosaPrestador> 
     <ans:opcaoRecurso> 
      <ans:recursoGuia> 
      <ans:numeroGuiaOrigem>430912301</ans:numeroGuiaOrigem> 
      <ans:numeroGuiaOperadora>24000000000605290391</ans:numeroGuiaOperadora> 
      <ans:opcaoRecursoGuia> 
       <ans:itensGuia> 
       <ans:dataInicio>2017-06-23</ans:dataInicio> 
       <ans:dataFim>2017-06-23</ans:dataFim> 
       <ans:procRecurso> 
        <ans:codigoTabela>18</ans:codigoTabela> 
       </ans:procRecurso> 
       <ans:justificativaItem>VALOR CORRETO ATUAL -TAXA DE SALA UTILIZADA PARA PROCEDIMENTOS CONFORME ACORDO ENTRE PARTES-valor correto </ans:justificativaItem> 
       </ans:itensGuia> 
       <ans:itensGuia> 
       <ans:dataInicio>2017-06-23</ans:dataInicio> 
       <ans:dataFim>2017-06-23</ans:dataFim> 
       <ans:procRecurso> 
        <ans:codigoTabela>20</ans:codigoTabela> 
       </ans:procRecurso> 
       <ans:justificativaItem> com acrescimo de 38,24% contempla a remuneração pelos serviços de seleção,armazenamento,distribuição</ans:justificativaItem> 
       </ans:itensGuia> 
      </ans:opcaoRecursoGuia> 
      </ans:recursoGuia> 
      <ans:recursoGuia> 
      <ans:numeroGuiaOrigem>430912302</ans:numeroGuiaOrigem> 
      <ans:numeroGuiaOperadora>24000000000605290392</ans:numeroGuiaOperadora> 
      <ans:opcaoRecursoGuia> 
       <ans:itensGuia> 
       <ans:dataInicio>2017-06-23</ans:dataInicio> 
       <ans:dataFim>2017-06-23</ans:dataFim> 
       <ans:procRecurso> 
        <ans:codigoTabela>18</ans:codigoTabela> 
       </ans:procRecurso> 
       <ans:justificativaItem>VALOR CORRETO ATUAL -TAXA DE SALA UTILIZADA PARA PROCEDIMENTOS CONFORME ACORDO ENTRE PARTES-valor correto </ans:justificativaItem> 
       </ans:itensGuia> 
       <ans:itensGuia> 
       <ans:dataInicio>2017-06-23</ans:dataInicio> 
       <ans:dataFim>2017-06-23</ans:dataFim> 
       <ans:procRecurso> 
        <ans:codigoTabela>20</ans:codigoTabela> 
       </ans:procRecurso> 
       <ans:justificativaItem> com acrescimo de 38,24% contempla a remuneração pelos serviços de seleção,armazenamento,distribuição</ans:justificativaItem> 
       </ans:itensGuia> 
      </ans:opcaoRecursoGuia> 
      </ans:recursoGuia> 
      <ans:recursoGuia> 
      <ans:numeroGuiaOrigem>430912303</ans:numeroGuiaOrigem> 
      <ans:numeroGuiaOperadora>24000000000605290393</ans:numeroGuiaOperadora> 
      <ans:opcaoRecursoGuia> 
       <ans:itensGuia> 
       <ans:dataInicio>2017-06-23</ans:dataInicio> 
       <ans:dataFim>2017-06-23</ans:dataFim> 
       <ans:procRecurso> 
        <ans:codigoTabela>18</ans:codigoTabela> 
       </ans:procRecurso> 
       <ans:justificativaItem>VALOR CORRETO ATUAL -TAXA DE SALA UTILIZADA PARA PROCEDIMENTOS CONFORME ACORDO ENTRE PARTES-valor correto </ans:justificativaItem> 
       </ans:itensGuia> 
       <ans:itensGuia> 
       <ans:dataInicio>2017-06-23</ans:dataInicio> 
       <ans:dataFim>2017-06-23</ans:dataFim> 
       <ans:procRecurso> 
        <ans:codigoTabela>20</ans:codigoTabela> 
       </ans:procRecurso> 
       <ans:justificativaItem> com acrescimo de 38,24% contempla a remuneração pelos serviços de seleção,armazenamento,distribuição</ans:justificativaItem> 
       </ans:itensGuia> 
      </ans:opcaoRecursoGuia> 
      </ans:recursoGuia> 
      <ans:recursoGuia> 
      <ans:numeroGuiaOrigem>430912304</ans:numeroGuiaOrigem> 
      <ans:numeroGuiaOperadora>24000000000605290394</ans:numeroGuiaOperadora> 
      <ans:opcaoRecursoGuia> 
       <ans:itensGuia> 
       <ans:dataInicio>2017-06-27</ans:dataInicio> 
       <ans:dataFim>2017-06-27</ans:dataFim> 
       <ans:procRecurso> 
        <ans:codigoTabela>18</ans:codigoTabela> 
       </ans:procRecurso> 
       <ans:justificativaItem>VALOR CORRETO ATUAL -TAXA DE SALA UTILIZADA PARA PROCEDIMENTOS CONFORME ACORDO ENTRE PARTES-valor correto </ans:justificativaItem> 
       </ans:itensGuia> 
      </ans:opcaoRecursoGuia> 
      </ans:recursoGuia> 
     </ans:opcaoRecurso> 
     </ans:guiaRecursoGlosa> 
    </ans:recursoGlosa> 
    </ans:prestadorParaOperadora> 
</ans:mensagemTISS> 

答えて

2

を必要グループ化。 XSLT 1.0を使用しているため、使用するバージョンによって以下の説明があります。

質問で指定されているように、<ans:numeroGuiaOrigem><ans:numeroGuiaOperadora>ノードの値でグループ化する必要があります。したがって、複合キーは|セパレータを使用して以下のように定義されます。

このキーを使用すると、<ans:recursoGuia>ノードのテンプレートマッチングが行われます。

<xsl:template match="ans:recursoGuia[generate-id() = generate-id(key('grpKey',concat(ans:numeroGuiaOrigem,'|',ans:numeroGuiaOperadora))[1])]"> 

完全なXSLTは以下の通りです。

<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ans="http://www.ans.gov.br/padroes/tiss/schemas"> 
    <xsl:output method="xml" encoding="UTF-8" indent="yes" /> 
    <xsl:strip-space elements="*" /> 

    <!-- create grouping key using the required nodes --> 
    <xsl:key name="grpKey" match="ans:recursoGuia" use="concat(ans:numeroGuiaOrigem,'|',ans:numeroGuiaOperadora)" /> 

    <!-- identity transform --> 
    <xsl:template match="@*|node()"> 
     <xsl:copy> 
      <xsl:apply-templates select="@*|node()" /> 
     </xsl:copy> 
    </xsl:template> 

    <!-- match templates according to grouping key --> 
    <xsl:template match="ans:recursoGuia[generate-id() = generate-id(key('grpKey',concat(ans:numeroGuiaOrigem,'|',ans:numeroGuiaOperadora))[1])]"> 
     <ans:recursoGuia> 
      <!-- copy elements except <ans:opcaoRecursoGuia> --> 
      <xsl:apply-templates select="*[not(self::ans:opcaoRecursoGuia)]" /> 
      <!-- create new element <ans:opcaoRecursoGuia> --> 
      <ans:opcaoRecursoGuia> 
       <!-- copy all grouped <ans:itensGuia> elements --> 
       <xsl:apply-templates select="key('grpKey',concat(ans:numeroGuiaOrigem,'|',ans:numeroGuiaOperadora))/ans:opcaoRecursoGuia/ans:itensGuia" /> 
      </ans:opcaoRecursoGuia> 
     </ans:recursoGuia> 
    </xsl:template> 

    <!-- no processing on the remaining <ans:recursoGuia> nodes --> 
    <xsl:template match="ans:recursoGuia" /> 
</xsl:transform> 

出力

<ans:mensagemTISS xmlns:ans="http://www.ans.gov.br/padroes/tiss/schemas" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.ans.gov.br/padroes/tiss/schemas http://www.ans.gov.br/padroes/tiss/schemas/tissV3_02_00.xsd"> 
    <ans:cabecalho> 
     <ans:versaoPadrao>3.02.00</ans:versaoPadrao> 
    </ans:cabecalho> 
    <ans:prestadorParaOperadora> 
     <ans:recursoGlosa> 
      <ans:guiaRecursoGlosa> 
       <ans:registroANS>005711</ans:registroANS> 
       <ans:numeroGuiaRecGlosaPrestador>431089079</ans:numeroGuiaRecGlosaPrestador> 
       <ans:opcaoRecurso> 
        <ans:recursoGuia> 
         <ans:numeroGuiaOrigem>430912301</ans:numeroGuiaOrigem> 
         <ans:numeroGuiaOperadora>24000000000605290391</ans:numeroGuiaOperadora> 
         <ans:opcaoRecursoGuia> 
          <ans:itensGuia> 
           <ans:dataInicio>2017-06-23</ans:dataInicio> 
           <ans:dataFim>2017-06-23</ans:dataFim> 
           <ans:procRecurso> 
            <ans:codigoTabela>18</ans:codigoTabela> 
           </ans:procRecurso> 
           <ans:justificativaItem>VALOR CORRETO ATUAL -TAXA DE SALA UTILIZADA PARA PROCEDIMENTOS CONFORME ACORDO ENTRE PARTES-valor correto </ans:justificativaItem> 
          </ans:itensGuia> 
          <ans:itensGuia> 
           <ans:dataInicio>2017-06-23</ans:dataInicio> 
           <ans:dataFim>2017-06-23</ans:dataFim> 
           <ans:procRecurso> 
            <ans:codigoTabela>20</ans:codigoTabela> 
           </ans:procRecurso> 
           <ans:justificativaItem> com acrescimo de 38,24% contempla a remuneração pelos serviços de seleção,armazenamento,distribuição</ans:justificativaItem> 
          </ans:itensGuia> 
         </ans:opcaoRecursoGuia> 
        </ans:recursoGuia> 
        <ans:recursoGuia> 
         <ans:numeroGuiaOrigem>430912302</ans:numeroGuiaOrigem> 
         <ans:numeroGuiaOperadora>24000000000605290392</ans:numeroGuiaOperadora> 
         <ans:opcaoRecursoGuia> 
          <ans:itensGuia> 
           <ans:dataInicio>2017-06-23</ans:dataInicio> 
           <ans:dataFim>2017-06-23</ans:dataFim> 
           <ans:procRecurso> 
            <ans:codigoTabela>18</ans:codigoTabela> 
           </ans:procRecurso> 
           <ans:justificativaItem>VALOR CORRETO ATUAL -TAXA DE SALA UTILIZADA PARA PROCEDIMENTOS CONFORME ACORDO ENTRE PARTES-valor correto </ans:justificativaItem> 
          </ans:itensGuia> 
          <ans:itensGuia> 
           <ans:dataInicio>2017-06-23</ans:dataInicio> 
           <ans:dataFim>2017-06-23</ans:dataFim> 
           <ans:procRecurso> 
            <ans:codigoTabela>20</ans:codigoTabela> 
           </ans:procRecurso> 
           <ans:justificativaItem> com acrescimo de 38,24% contempla a remuneração pelos serviços de seleção,armazenamento,distribuição</ans:justificativaItem> 
          </ans:itensGuia> 
         </ans:opcaoRecursoGuia> 
        </ans:recursoGuia> 
        <ans:recursoGuia> 
         <ans:numeroGuiaOrigem>430912303</ans:numeroGuiaOrigem> 
         <ans:numeroGuiaOperadora>24000000000605290393</ans:numeroGuiaOperadora> 
         <ans:opcaoRecursoGuia> 
          <ans:itensGuia> 
           <ans:dataInicio>2017-06-23</ans:dataInicio> 
           <ans:dataFim>2017-06-23</ans:dataFim> 
           <ans:procRecurso> 
            <ans:codigoTabela>18</ans:codigoTabela> 
           </ans:procRecurso> 
           <ans:justificativaItem>VALOR CORRETO ATUAL -TAXA DE SALA UTILIZADA PARA PROCEDIMENTOS CONFORME ACORDO ENTRE PARTES-valor correto </ans:justificativaItem> 
          </ans:itensGuia> 
          <ans:itensGuia> 
           <ans:dataInicio>2017-06-23</ans:dataInicio> 
           <ans:dataFim>2017-06-23</ans:dataFim> 
           <ans:procRecurso> 
            <ans:codigoTabela>20</ans:codigoTabela> 
           </ans:procRecurso> 
           <ans:justificativaItem> com acrescimo de 38,24% contempla a remuneração pelos serviços de seleção,armazenamento,distribuição</ans:justificativaItem> 
          </ans:itensGuia> 
         </ans:opcaoRecursoGuia> 
        </ans:recursoGuia> 
        <ans:recursoGuia> 
         <ans:numeroGuiaOrigem>430912304</ans:numeroGuiaOrigem> 
         <ans:numeroGuiaOperadora>24000000000605290394</ans:numeroGuiaOperadora> 
         <ans:opcaoRecursoGuia> 
          <ans:itensGuia> 
           <ans:dataInicio>2017-06-27</ans:dataInicio> 
           <ans:dataFim>2017-06-27</ans:dataFim> 
           <ans:procRecurso> 
            <ans:codigoTabela>18</ans:codigoTabela> 
           </ans:procRecurso> 
           <ans:justificativaItem>VALOR CORRETO ATUAL -TAXA DE SALA UTILIZADA PARA PROCEDIMENTOS CONFORME ACORDO ENTRE PARTES-valor correto </ans:justificativaItem> 
          </ans:itensGuia> 
         </ans:opcaoRecursoGuia> 
        </ans:recursoGuia> 
       </ans:opcaoRecurso> 
      </ans:guiaRecursoGlosa> 
     </ans:recursoGlosa> 
    </ans:prestadorParaOperadora> 
</ans:mensagemTISS> 
+0

はどうもありがとうございました –

関連する問題