2012-03-22 11 views
7

Mam dość duży dokument XSL dla zadania, które wykonuje wiele rzeczy. Jest prawie kompletny, ale brakowało mi wymogu, aby go posortować i nie mogę go uruchomić. Oto SSCCE tego, co się dzieje.xsl: sortuj z zastosowaniem szablonów nie sortujących

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

<!-- Root Document --> 
<xsl:template match="/"> 

    <html> 
    <body> 

     <xsl:apply-templates select="staff"> 
      <xsl:sort select="member/last_name" /> 
     </xsl:apply-templates> 

    </body> 
    </html> 

</xsl:template> 

<xsl:template match="member"> 
    <xsl:value-of select="first_name" />&#160;<xsl:value-of select="last_name" /> <br/> 
</xsl:template> 

</xsl:stylesheet> 

plik XML wygląda to

<?xml version="1.0" encoding="UTF-8"?> 

<?xml-stylesheet type="text/xsl" href="sort.xsl"?> 

<staff> 
    <member> 
     <first_name>Joe</first_name> 
     <last_name>Blogs</last_name> 
    </member> 

    <member> 
     <first_name>John</first_name> 
     <last_name>Smith</last_name> 
    </member> 

    <member> 
     <first_name>Steven</first_name> 
     <last_name>Adams</last_name> 
    </member> 

</staff> 

Spodziewałem pracownicy mają być sortowane według nazwiska, ale nie są one klasyfikowane uzyskiwanie. Proszę pamiętać, że jestem bardzo niedoświadczony w XSLT.

Odpowiedz

20
<xsl:apply-templates select="staff"> 
     <xsl:sort select="member/last_name" /> 
    </xsl:apply-templates> 

wybiera elementy personalnych i sortuje je, ale jest tylko jeden element personel, więc jest to nie-op.

Zmiana

<xsl:apply-templates select="staff/member"> 
     <xsl:sort select="last_name" /> 
    </xsl:apply-templates> 

wtedy wybiera wszystkie elementy członkowskie i sortuje je.

3

czego brakuje to szablon pasujący personel lub zmienić szablon pasujący do członka, jak w ten jeden:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

<!-- Root Document --> 
<xsl:template match="/"> 

    <html> 
    <body> 

     <xsl:apply-templates select="staff/member"> 
      <xsl:sort select="last_name" /> 
     </xsl:apply-templates> 

    </body> 
    </html> 

</xsl:template> 

<xsl:template match="member"> 
    <xsl:value-of select="first_name" />&#160;<xsl:value-of select="last_name" /> <br/> 
</xsl:template> 

</xsl:stylesheet> 
Powiązane problemy