2015-01-06 4 views
0
내가 id 필드에 정렬하려면 다음과 같은 XML이 필요

:XSL : 정렬 정렬되지 않은 데이터

<top> 
<repeat1> 
    <repeat2> 
     <contents> 
      <contentitem> 
       <id>9</id> 
       <moretags1/> 
       <moretags2/> 
      </contentitem> 
     </contents> 
    </repeat2> 
</repeat1> 
<repeat1> 
    <repeat2> 
     <contents> 
      <contentitem> 
       <id>6</id> 
       <moretags1/> 
       <moretags2/> 
      </contentitem> 
     </contents> 
    </repeat2> 
</repeat1> 
<repeat1> 
    <repeat2> 
     <contents> 
      <contentitem> 
       <id>3</id> 
       <moretags1/> 
       <moretags2/> 
      </contentitem> 
     </contents> 
    </repeat2> 
</repeat1> 
</top> 

그래서 다음과 같이 분류 할 : 즉

<top> 
<repeat1> 
    <repeat2> 
     <contents> 
      <contentitem> 
       <id>3</id> 
       <moretags1/> 
       <moretags2/> 
      </contentitem> 
     </contents> 
    </repeat2> 
</repeat1> 
<repeat1> 
    <repeat2> 
     <contents> 
      <contentitem> 
       <id>6</id> 
       <moretags1/> 
       <moretags2/> 
      </contentitem> 
     </contents> 
    </repeat2> 
</repeat1> 
<repeat1> 
    <repeat2> 
     <contents> 
      <contentitem> 
       <id>9</id> 
       <moretags1/> 
       <moretags2/> 
      </contentitem> 
     </contents> 
    </repeat2> 
</repeat1> 
</top> 

, 나는의 ContentItem을 원하는 그룹화를 그대로 유지하지만 결과 XML에 ID 순으로 나열합니다. 나는 다음 xsl을 사용하려고하지만 어떤 행운을 갖지 않으려 고 노력하고있다. 오히려 여기에 contents 요소보다는 repeat1 요소를 정렬해야처럼

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output omit-xml-declaration="yes" indent="yes" method="xml"/> 
<!--            --> 
<xsl:strip-space elements="*"/> 
<!--            --> 
<xsl:template match="node()|@*"> 
    <xsl:copy> 
     <xsl:apply-templates select="node()|@*"/> 
    </xsl:copy> 
</xsl:template> 
<!--            --> 
<xsl:template match="contents"> 
    <xsl:copy> 
     <xsl:apply-templates select="contentitem"> 
      <xsl:sort select="id" data-type="number" order="ascending"/> 
     </xsl:apply-templates> 
    </xsl:copy> 
</xsl:template> 
</xsl:stylesheet> 

답변

3

는 것 같습니다.

대신이 XSLT을 시도해보십시오

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output omit-xml-declaration="yes" indent="yes" method="xml"/> 
<xsl:strip-space elements="*"/> 

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

<xsl:template match="top"> 
    <xsl:copy> 
     <xsl:apply-templates select="repeat1"> 
      <xsl:sort select="repeat2/contents/contentitem/id" data-type="number" order="ascending"/> 
     </xsl:apply-templates> 
    </xsl:copy> 
</xsl:template> 
</xsl:stylesheet> 
관련 문제