2016-11-23 6 views
0

Как отсортировать xml сначала на основе атрибута InfoNo, а затем атрибута SeqNo с использованием xsl с использованием шаблонов. Я пытался в XSL, но я могу сделать только один атрибутСортировка по двум атрибутам

Входной XML:

 <Customer> 
      <Info InfoNo="2" SeqNo="1" > 
       <LastName>Wilson</LastName> 
       <GivenName>Kelley</GivenName> 
      </Info> 
      <Info InfoNo="4" SeqNo="1" > 
       <LastName>Graham</LastName> 
       <GivenName>Tom</GivenName> 
      </Info> 
      <Info InfoNo="1" SeqNo="3" > 
       <LastName>Fisher</LastName> 
       <GivenName>Elaine</GivenName> 
      </Info> 
      <Info InfoNo="1" SeqNo="2" "> 
       <LastName>Gary</LastName> 
       <GivenName>Jerry</GivenName> 
      </Info> 
      <Info InfoNo="1" SeqNo="1" > 
       <LastName>Timothy</LastName> 
       <GivenName>Kathy</GivenName> 
      </Info> 
      <Info InfoNo="3" SeqNo="1" > 
       <LastName>Tim</LastName> 
       <GivenName>Kerry</GivenName> 
      </Info> 
      <Info InfoNo="1" SeqNo="4" > 
       <LastName>Rob</LastName> 
       <GivenName>Tony</GivenName> 
      </Info> 
     </Customer> 

Ожидаемый результат XML:

<Customer> 
      <Info InfoNo="1" SeqNo="1" > 
       <LastName>Timothy</LastName> 
       <GivenName>Kathy</GivenName> 
      </Info> 
      <Info InfoNo="1" SeqNo="2" "> 
       <LastName>Gary</LastName> 
       <GivenName>Jerry</GivenName> 
      </Info> 
      <Info InfoNo="1" SeqNo="3" > 
       <LastName>Fisher</LastName> 
       <GivenName>Elaine</GivenName> 
      </Info> 
      <Info InfoNo="1" SeqNo="4" > 
       <LastName>Rob</LastName> 
       <GivenName>Tony</GivenName> 
      </Info>     
      <Info InfoNo="2" SeqNo="1" > 
       <LastName>Wilson</LastName> 
       <GivenName>Kelley</GivenName> 
      </Info> 
      <Info InfoNo="3" SeqNo="1" > 
       <LastName>Tim</LastName> 
       <GivenName>Kerry</GivenName> 
      </Info>     
      <Info InfoNo="4" SeqNo="1" > 
       <LastName>Graham</LastName> 
       <GivenName>Tom</GivenName> 
      </Info> 
     </Customer>  

Нужна она в xslt1.0

+0

«Я пробовал в xsl, но могу сделать только по одному атрибуту»: Так почему вы не можете написать два 'xsl: sort'? –

ответ

0

Используйте два <xsl:sort> с для этого:

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

<xsl:template match="/Customer"> 
    <Customer> 
    <xsl:for-each select="Info"> 
     <xsl:sort select="@InfoNo" data-type="number" /> 
     <xsl:sort select="@SeqNo" data-type="number" /> 
     <xsl:copy-of select="." /> 
    </xsl:for-each> 
    </Customer> 
</xsl:template> 

</xsl:stylesheet> 
Смежные вопросы