2013-11-24 7 views
0

xml을 xslt 시트가있는 다른 xml 파일로 변환하려고합니다 : 하지만 이것을 변형하면 nobelprize의 결과가 여전히 올바른 순서가 아닙니다 ... 어떻게 올바르게 수행 할 수 있습니까?XSLT : 요소를 정렬하려면 어떻게해야합니까?

<?xml version="1.0" encoding="ISO-8859-1"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output encoding="ISO-8859-1" indent="yes" method="xml" /> 


    <xsl:template match="/"> 
     <nobelpreisträger> 
      <xsl:apply-templates> 

      </xsl:apply-templates> 
     </nobelpreisträger> 
    </xsl:template> 

    <xsl:template match="autor">   
     <Name> 
     <xsl:value-of select="nachname"/> 
     </Name> 
     <Vorname> 
     <xsl:apply-templates select="vorname"/> 
     </Vorname> 
     <JahrNobelpreis> 
      <xsl:apply-templates select="nobelpreis" > 
       <xsl:sort select="nobelpreis" order="ascending" /> 
      </xsl:apply-templates>   
     </JahrNobelpreis>  
    </xsl:template> 
</xsl:stylesheet> 

내 원래 XML 파일 :

<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?> 
<!DOCTYPE autoren SYSTEM "autoren.dtd"> 
<autoren> 
    <autor> 
     <nachname>Prudhomme</nachname> 
     <vorname>Sully</vorname> 
     <nobelpreis>1901</nobelpreis> 
     <sprache>französisch</sprache> 
     <buch> 
      <titel>t1888</titel> 
      <erscheinungsjahr>1888</erscheinungsjahr> 
     </buch> 
    </autor> 

    <autor> 
     <nachname>Hauptmann</nachname> 
     <vorname>Gerhard</vorname> 
     <nobelpreis>1912</nobelpreis> 
     <sprache>deutsch</sprache> 
     <buch> 
      <titel>t1900</titel> 
      <erscheinungsjahr>1900</erscheinungsjahr> 
     </buch> 
     <buch> 
      <titel>t1901</titel> 
      <erscheinungsjahr>1901</erscheinungsjahr> 
     </buch> 
    </autor> 

    <autor> 
     <nachname>France</nachname> 
     <vorname>Anatol</vorname> 
     <nobelpreis>1921</nobelpreis> 
     <sprache>französisch</sprache> 
     <buch> 
      <titel>t1900</titel> 
      <erscheinungsjahr>1900</erscheinungsjahr> 
     </buch> 
    </autor> 

    <autor> 
     <nachname>Lagerlöf</nachname> 
     <vorname>Selma</vorname> 
     <nobelpreis>1909</nobelpreis> 
     <sprache>schwedisch</sprache> 
     <buch> 
      <titel>t1900</titel> 
      <erscheinungsjahr>1900</erscheinungsjahr> 
     </buch> 
    </autor> 

    <autor> 
     <nachname>Hemingway</nachname> 
     <vorname>Ernest</vorname> 
     <nobelpreis>1954</nobelpreis> 
     <sprache>englisch</sprache> 
     <buch> 
      <titel>t1965</titel> 
      <erscheinungsjahr>1965</erscheinungsjahr> 
     </buch> 
     <buch> 
      <titel>t1951</titel> 
      <erscheinungsjahr>1951</erscheinungsjahr> 
     </buch> 
    </autor> 

    <autor> 
     <nachname>Cornwell</nachname> 
     <vorname>Patricia</vorname> 
     <sprache>englisch</sprache> 
     <buch> 
      <titel>From Potter's Field</titel> 
      <erscheinungsjahr>1995</erscheinungsjahr> 
     </buch> 
     <buch> 
      <titel>t1995</titel> 
      <erscheinungsjahr>1995</erscheinungsjahr> 
     </buch> 
    </autor> 

    <autor> 
     <nachname>Böll</nachname> 
     <vorname>Heinrich</vorname> 
     <nobelpreis>1972</nobelpreis> 
     <sprache>deutsch</sprache> 
     <buch> 
      <titel>t1969</titel> 
      <erscheinungsjahr>1969</erscheinungsjahr> 
     </buch> 
     <buch> 
      <titel>t1965</titel> 
      <erscheinungsjahr>1965</erscheinungsjahr> 
     </buch> 
    </autor> 

    <autor> 
     <nachname>Gide</nachname> 
     <vorname>André</vorname> 
     <nobelpreis>1947</nobelpreis> 
     <sprache>französisch</sprache> 
     <buch> 
      <titel>t1945</titel> 
      <erscheinungsjahr>1945</erscheinungsjahr> 
     </buch> 
    </autor> 

    <autor> 
     <nachname>Mann</nachname> 
     <vorname>Thomas</vorname> 
     <nobelpreis>1929</nobelpreis> 
     <sprache>deutsch</sprache> 
     <buch> 
      <titel>t1930</titel> 
      <erscheinungsjahr>1930</erscheinungsjahr> 
     </buch> 
     <buch> 
      <titel>t1910</titel> 
      <erscheinungsjahr>1910</erscheinungsjahr> 
     </buch> 
    </autor> 

    <autor> 
     <nachname>Mann</nachname> 
     <vorname>Heinrich</vorname> 
     <sprache>deutsch</sprache> 
     <buch> 
      <titel>t1920</titel> 
      <erscheinungsjahr>1920</erscheinungsjahr> 
     </buch> 
    </autor> 

    <autor> 
     <nachname>Faulkner</nachname> 
     <vorname>William</vorname> 
     <nobelpreis>1949</nobelpreis> 
     <sprache>englisch</sprache> 
     <buch> 
      <titel>t1930</titel> 
      <erscheinungsjahr>1930</erscheinungsjahr> 
     </buch> 
     <buch> 
      <titel>t1932</titel> 
      <erscheinungsjahr>1932</erscheinungsjahr> 
     </buch> 
    </autor> 

</autoren> 

답변

3

당신은 너무 늦게 정렬 절을 추가로, 당신은 요소를 containg 템플릿이 적용되는 경우를해야한다.

이 나를 위해 잘 정렬 :

<xsl:template match="autoren"> 
    <xsl:apply-templates select="autor"> 
     <xsl:sort select="nobelpreis" order="ascending" /> 
    </xsl:apply-templates> 
    </xsl:template> 

    <xsl:template match="autor"> 
    <Name> 
     <xsl:value-of select="nachname"/> 
    </Name> 
    <Vorname> 
     <xsl:apply-templates select="vorname"/> 
    </Vorname> 
    <JahrNobelpreis> 
     <xsl:apply-templates select="nobelpreis" /> 
    </JahrNobelpreis> 
    </xsl:template> 
+0

그래 당신은 내가 바보 ... 내가 그 3 시간 동안하고, 옳았 롤 – user2774480

관련 문제