XSL - Problemchen (Sortierung)

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • XSL - Problemchen (Sortierung)

    Hallo nochmal.
    Es geht diesmal wieder um meine Bibliotheks-Liste, die ich nun über XSL ausgeben möchte in eine speziellen Art und Weise.

    Die Struktur der XML ist die folgende: (gekürzt)

    PHP-Code:
    <?xml version="1.0" encoding="utf-8" standalone="no"?>
    <?xml-stylesheet type="text/xsl" href="layout.xsl" ?>
    <bibliography xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="lasttry.xsd">
    <bibo>
        <bib_phdthesis type="phdthesis" id="Abadie:92">
          <author>B. Abadie</author>
          <title>On the K-theory of non-commutative Heisenberg manifolds</title>
          <school>Univ. of California at Berkeley</school>
          <year>1992</year>
        </bib_phdthesis>
        <bib_inproceedings type="inproceedings" id="Abadie:94">
          <author>B. Abadie</author>
          <title>”Vector bundles” over quantum Heisenberg manifolds</title>
          <booktitle>Algebraic Methods in Operator Theory</booktitle>
          <editor>R. Curto and P. E. T. Jørgensen</editor>
          <publisher>Birkhäuser, Boston - Basel - Berlin</publisher>
          <year>1994</year>
          <note>307-315</note>
        </bib_inproceedings>
        <bib_article type="article" id="Abadie:95">
          <author>B. Abadie</author>
          <title>Generalized fixed-point algebras of certain actions on crossed products</title>
          <journal>Pacific J. Math.</journal>
          <volume>171</volume>
          <year>1995</year>
          <note>1-21</note>
        </bib_article>
    ...
    Ihr seht, es gibt in der Datei tausende Einträge von unterschiedlichen Typen (Article, Phdthesis, Inproceedings, ...), die nun über XSL geordnet nach dem Author ausgegeben werden sollen und genau da ist mein Problem.

    Der Aufbau des XSL sieht folgendermaßen aus: (gekürzt)

    PHP-Code:
    <?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
     <html><head>
     </head>
     
     <body>
     <h2>Hilbert C* Modules Bibliography</h2>
     <xsl:for-each select="bibliography/bibo">
        <xsl:sort select="author"/>
        <xsl:for-each select="bib_article">
        <table>
        <tr>
            <td class="nummer">
                <xsl:number level="single" count="*" format="[1]" />
            </td>
            <td class="inhalt">
            <xsl:if test="author">
                <xsl:text> </xsl:text>
                <xsl:value-of select="author" />
            </xsl:if>
            <xsl:if test="title">
            <xsl:text>, </xsl:text>
                <span class="title"><xsl:value-of select="title" /></span>
            </xsl:if>
            <xsl:if test="journal">
                <xsl:text>, </xsl:text>
                <xsl:value-of select="journal" />
            </xsl:if>
            <xsl:if test="volume">
                <xsl:text> </xsl:text>
                <span class="volume"><xsl:value-of select="volume" /></span>
            </xsl:if>
            <xsl:if test="year">
                <xsl:text> (</xsl:text>
                <xsl:value-of select="year" />
                <xsl:text>)</xsl:text>
            </xsl:if>
            <xsl:if test="number">
            <xsl:text>, number: </xsl:text>
                <xsl:value-of select="number" />
            </xsl:if>
            <xsl:if test="pages">
                <xsl:text>, pages: </xsl:text>
                <xsl:value-of select="pages" />
            </xsl:if>
            <xsl:if test="month">
                <xsl:text>, month: </xsl:text>
                <xsl:value-of select="month" />
            </xsl:if>
            </td>
            </tr>
            </table>
        </xsl:for-each>
        
        <xsl:for-each select="bib_book">
        <table>
        <tr>
            <td class="nummer">
                <xsl:number level="single" count="*" format="[1]" />
            </td>
            <td class="inhalt">
            <xsl:if test="author">
                <xsl:text> </xsl:text>
                <xsl:value-of select="author" />
            </xsl:if>
            <xsl:if test="title">
            <xsl:text>, </xsl:text>
                <span class="title"><xsl:value-of select="title" /></span>
            </xsl:if>
            <xsl:if test="publisher">
                <xsl:text>, </xsl:text>
                <xsl:value-of select="publisher" />
            </xsl:if>
            <xsl:if test="year">
                <xsl:text> (</xsl:text>
                <xsl:value-of select="year" />
                <xsl:text>)</xsl:text>
            </xsl:if>
            <xsl:if test="number">
            <xsl:text>, number: </xsl:text>
                <xsl:value-of select="number" />
            </xsl:if>
            <xsl:if test="pages">
                <xsl:text>, pages: </xsl:text>
                <xsl:value-of select="pages" />
            </xsl:if>
            <xsl:if test="month">
                <xsl:text>, month: </xsl:text>
                <xsl:value-of select="month" />
            </xsl:if>
            </td>
            </tr>
            </table>
        </xsl:for-each>
     </xsl:for-each>
     
    </body></html>
    </xsl:template>

    </xsl:stylesheet>
    Es wird zwar alles ausgegeben, aber eben nicht sortiert nach Author.
    Was kann ich tun, um zum gewünschten Ziel zu kommen??

  • #2
    Hallo,

    das author-Element kommt nicht als Kind von bibo vor, sondern nur als Enkel. Daher wird nicht sortiert. Du müsstest <xsl:sort select="*/author" /> schreiben, damit bei der Sortierung diese zusätzliche Ebene übersprungen wird.

    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar

    Lädt...
    X