Ausgabe von XML Datei mittels XSL

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Ausgabe von XML Datei mittels XSL

    Hi,

    erstmal die XML Datei die ich benutze:

    Quellcode

    1. <?xml version="1.0" encoding="ISO-8859-1"?>
    2. <?xml-stylesheet type="text/xsl" href="11-Bericht.xsl"?>
    3. <!DOCTYPE Bestellungen SYSTEM "08-bestell.dtd">
    4. <Bestellungen>
    5. <Bestellung id="myIDstring01">
    6. <Bestellkopf>
    7. <Belegnummer Belegart="Bestellung">1234567</Belegnummer>
    8. <Datum Funktion="Best" Format="ISOFMT">20030415</Datum>
    9. <Datum Funktion="LieferGew" Format="ISOFMT">20030720</Datum>
    10. <Handelspartner Rolle="Besteller">
    11. <Name>XY Handels AG</Name>
    12. <IdentNr IdentArt="GLN">2100000000001</IdentNr>
    13. </Handelspartner>
    14. <Handelspartner Rolle="Lieferant">
    15. <Name>ABC GmbH</Name>
    16. <IdentNr IdentArt="GLN">2900000200005</IdentNr>
    17. </Handelspartner>
    18. </Bestellkopf>
    19. <Bestellposition PosNr="1">
    20. <ArtNr IdentArt="ISBN">0-13-065198-2</ArtNr>
    21. <Beschreibung>XML Handbook 4th ed.</Beschreibung>
    22. <Menge>80</Menge>
    23. </Bestellposition>
    24. <Bestellposition PosNr="2">
    25. <ArtNr>2900000200005</ArtNr>
    26. <Beschreibung>Premium Pils alkoholfrei</Beschreibung>
    27. <Menge MengenArt="bestellt" MengenEinheit="LTR">100</Menge>
    28. </Bestellposition>
    29. <Bestellsumme>
    30. <Summenterm SummenArt="AnzPos">2</Summenterm>
    31. </Bestellsumme>
    32. </Bestellung>
    33. <Bestellung id="myIDstring02">
    34. <Bestellkopf>
    35. <Belegnummer Belegart="Bestellung">1234568</Belegnummer>
    36. <Datum Funktion="Best" Format="ISOFMT">20030416</Datum>
    37. <Datum Funktion="LieferGew" Format="DINFMT">20030530</Datum>
    38. <Handelspartner Rolle="Besteller">
    39. <Name>XY Handels AG</Name>
    40. <IdentNr IdentArt="GLN">2100000000001</IdentNr>
    41. </Handelspartner>
    42. <Handelspartner Rolle="Lieferant">
    43. <Name>ABC GmbH</Name>
    44. <IdentNr IdentArt="GLN">2900000200005</IdentNr>
    45. </Handelspartner>
    46. </Bestellkopf>
    47. <Bestellposition PosNr="1">
    48. <ArtNr IdentArt="ISBN">0-13-065198-2</ArtNr>
    49. <Beschreibung>XML Handbook 4th ed.</Beschreibung>
    50. <Menge>20</Menge>
    51. </Bestellposition>
    52. <Bestellposition PosNr="2">
    53. <ArtNr>2900000200005</ArtNr>
    54. <Beschreibung>Premium Pils alkoholfrei</Beschreibung>
    55. <Menge MengenArt="bestellt" MengenEinheit="LTR">20</Menge>
    56. </Bestellposition>
    57. <Bestellposition PosNr="3">
    58. <ArtNr>2900000200005</ArtNr>
    59. <Beschreibung>Premium Pils alkoholfrei</Beschreibung>
    60. <Menge MengenArt="ohne-Berechnung" MengenEinheit="LTR">5</Menge>
    61. </Bestellposition>
    62. <Bestellsumme>
    63. <Summenterm SummenArt="AnzPos">3</Summenterm>
    64. </Bestellsumme>
    65. </Bestellung>
    66. <Bestellung id="myIDstring03">
    67. <Bestellkopf>
    68. <Belegnummer Belegart="Bestellung">1234569</Belegnummer>
    69. <Datum Funktion="Best" Format="ISOFMT">20030418</Datum>
    70. <Datum Funktion="LieferGew" Format="ISOFMT">20030920</Datum>
    71. <Handelspartner Rolle="Besteller">
    72. <Name>XY Handels AG</Name>
    73. <IdentNr IdentArt="GLN">2100000000001</IdentNr>
    74. </Handelspartner>
    75. <Handelspartner Rolle="Lieferant">
    76. <Name>ABC GmbH</Name>
    77. <IdentNr IdentArt="GLN">2900000200005</IdentNr>
    78. </Handelspartner>
    79. </Bestellkopf>
    80. </Bestellung>
    81. <Bestellung id="myIDstring04">
    82. <Bestellkopf>
    83. <Belegnummer Belegart="Bestellung">X54367</Belegnummer>
    84. <Datum Funktion="Best" Format="ISOFMT">20030415</Datum>
    85. <Datum Funktion="LieferGew" Format="ISOFMT">20030731</Datum>
    86. <Handelspartner Rolle="Besteller">
    87. <Name>Nil AG</Name>
    88. <IdentNr IdentArt="GLN">2800000000004</IdentNr>
    89. </Handelspartner>
    90. <Handelspartner Rolle="Lieferant">
    91. <Name>ABC GmbH</Name>
    92. <IdentNr IdentArt="GLN">2900000200005</IdentNr>
    93. </Handelspartner>
    94. <Handelspartner Rolle="Warenempfänger">
    95. <Name>Nil AG, Lager München</Name>
    96. <IdentNr IdentArt="GLN">2800000000028</IdentNr>
    97. </Handelspartner>
    98. </Bestellkopf>
    99. <Bestellposition PosNr="10">
    100. <ArtNr IdentArt="ISBN">0-13-065198-2</ArtNr>
    101. <Beschreibung>XML Handbook 4th ed.</Beschreibung>
    102. <Menge>10</Menge>
    103. </Bestellposition>
    104. <Bestellposition PosNr="20">
    105. <ArtNr IdentArt="ISBN">1-861005-59-8</ArtNr>
    106. <Beschreibung>Beginning XML 2nd edition</Beschreibung>
    107. <Menge>10</Menge>
    108. </Bestellposition>
    109. <Bestellposition PosNr="30">
    110. <ArtNr IdentArt="ISBN">1-861005-06-7</ArtNr>
    111. <Beschreibung>XSLT 2nd edition</Beschreibung>
    112. <Menge>60</Menge>
    113. </Bestellposition>
    114. <Bestellposition PosNr="40">
    115. <ArtNr IdentArt="ISBN">0-201-71098-6</ArtNr>
    116. <Beschreibung>XML for the World Wide Web</Beschreibung>
    117. <Menge>10</Menge>
    118. </Bestellposition>
    119. <Bestellposition PosNr="50">
    120. <ArtNr IdentArt="ISBN">0-596-00355-2</ArtNr>
    121. <Beschreibung>XSL-FO</Beschreibung>
    122. <Menge>5</Menge>
    123. </Bestellposition>
    124. <Bestellposition PosNr="60">
    125. <ArtNr IdentArt="ISBN">0-201-71089-7</ArtNr>
    126. <Beschreibung>Programming Ruby</Beschreibung>
    127. <Menge>100</Menge>
    128. </Bestellposition>
    129. <Bestellposition PosNr="70">
    130. <ArtNr IdentArt="ISBN">0-201-71089-7</ArtNr>
    131. <Beschreibung>Programming Ruby</Beschreibung>
    132. <Menge MengenArt="ohne-Berechnung">10</Menge>
    133. </Bestellposition>
    134. <Bestellsumme>
    135. <Summenterm SummenArt="AnzPos">6</Summenterm>
    136. </Bestellsumme>
    137. </Bestellung>
    138. <Bestellung id="myIDstring05">
    139. <Bestellkopf>
    140. <Belegnummer Belegart="Bestellung">AB012345</Belegnummer>
    141. <Datum Funktion="Best" Format="ISOFMT">20030528</Datum>
    142. <Datum Funktion="LieferGew" Format="ISOFMT">20030615</Datum>
    143. <Handelspartner Rolle="Besteller">
    144. <Name>Neu Handels AG</Name>
    145. <IdentNr IdentArt="GLN">2200000000002</IdentNr>
    146. </Handelspartner>
    147. <Handelspartner Rolle="Lieferant">
    148. <Name>ABC GmbH, Getränke-Abteilung</Name>
    149. <IdentNr IdentArt="GLN">2900000200012</IdentNr>
    150. </Handelspartner>
    151. </Bestellkopf>
    152. <Bestellposition PosNr="1">
    153. <ArtNr>2900000300002</ArtNr>
    154. <Beschreibung>Cola Light 1.5l</Beschreibung>
    155. <Menge MengenArt="bestellt" MengenEinheit="LTR">150</Menge>
    156. </Bestellposition>
    157. <Bestellposition PosNr="2">
    158. <ArtNr>2900000200005</ArtNr>
    159. <Beschreibung>Premium Pils alkoholfrei</Beschreibung>
    160. <Menge MengenArt="bestellt" MengenEinheit="LTR">100</Menge>
    161. </Bestellposition>
    162. <Bestellposition PosNr="3">
    163. <ArtNr>2900000400009</ArtNr>
    164. <Beschreibung>Erdnüsse trocken geröstet, 150g</Beschreibung>
    165. <Menge MengenArt="bestellt" MengenEinheit="PCE">180</Menge>
    166. </Bestellposition>
    167. <Bestellposition PosNr="4">
    168. <ArtNr>2900000400009</ArtNr>
    169. <Beschreibung>Erdnüsse trocken geröstet, 150g</Beschreibung>
    170. <Menge MengenArt="ohne-Berechnung" MengenEinheit="PCE">20</Menge>
    171. </Bestellposition>
    172. <Bestellsumme>
    173. <Summenterm SummenArt="AnzPos">4</Summenterm>
    174. </Bestellsumme>
    175. </Bestellung>
    176. </Bestellungen>
    Alles anzeigen


    Hier die XSL Datei:


    Quellcode

    1. <xsl:stylesheet xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    2. <xsl:output method="text" doctype-public="-//W3C//DTD XHTML 1.1//EN" doctype-system="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"/>
    3. <xsl:template match="Bestellungen">
    4. <xsl:text>
    5. Best.-Nr. |Best.Datum |Lieferdatum |Positionen
    6. ===========================================================
    7. </xsl:text>
    8. <xsl:apply-templates>
    9. <!--<xsl:sort select="Bestellkopf/Datum[@Funktion='LieferGew']" order="ascending"/>-->
    10. </xsl:apply-templates>
    11. </xsl:template>
    12. <xsl:template match="Bestellung">
    13. <xsl:value-of select="Bestellkopf/Belegnummer"/>
    14. <xsl:text> </xsl:text>
    15. <xsl:value-of select="Bestellkopf/Datum[@Funktion='Best']"/>
    16. <xsl:text> </xsl:text>
    17. <xsl:value-of select="Bestellkopf/Datum[@Funktion='LieferGew']"/>
    18. <xsl:text> </xsl:text>
    19. <xsl:value-of select="count(Bestellposition)"/>
    20. <xsl:text>&#x000A;</xsl:text>
    21. </xsl:template>
    22. </xsl:stylesheet>
    Alles anzeigen



    Und zwar möchte ich das er als Ergebnis mir eine Tabelle anzeigt die so aussieht:

    Best.-Nr. | Best.Datum | Lieferdatum | Positionen
    ============================================================
    1234568 | 20030416 | 20030530 | 3
    AB012345 | 20030528 | 20030615 | 4
    1234567 | 20030415 | 20030720 | 2
    X54367 | 20030415 | 20030731 | 7
    1234569 | 20030418 | 20030920 | 0


    Die Tabelle oben ist nach dem Lieferdatum sortiert. Das Problem was ich habe ist,
    dass ohne das sortieren mir die Tabelle so angezeigt wird, wie sie sein soll. Sprich von der Optik korrekt ist.

    Wenn ich die aber dann nach dem Lieferdatum sortieren will, wird die Tabelle verschoben angezeigt. Und die Spaltenüberschriften befinden sich ganz oben und die Daten ein ganzes Stück weiter unten.

    Was mache ich falsch? Wie kann ich den Fehler beheben, so dass meine Tabelle auch wenn ich nach dem Lieferdatum sortiere trotzdem richtig angezeigt wird.

    mfg
    n00b
  • So gehts:

    XSL:

    Quellcode

    1. <xsl:stylesheet xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    2. <xsl:output method="text" doctype-public="-//W3C//DTD XHTML 1.1//EN" doctype-system="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"/>
    3. <xsl:template match="/Bestellungen">
    4. <xsl:text>Best.-Nr. |Best.Datum |Lieferdatum |Positionen
    5. ===========================================================
    6. </xsl:text>
    7. <xsl:apply-templates>
    8. <xsl:sort select="Bestellkopf/Datum[@Funktion='LieferGew']/text()" order="ascending"/>
    9. </xsl:apply-templates>
    10. </xsl:template>
    11. <xsl:template match="Bestellung">
    12. <xsl:value-of select="Bestellkopf/Belegnummer"/>
    13. <xsl:text> </xsl:text>
    14. <xsl:value-of select="Bestellkopf/Datum[@Funktion='Best']"/>
    15. <xsl:text> </xsl:text>
    16. <xsl:value-of select="Bestellkopf/Datum[@Funktion='LieferGew']"/>
    17. <xsl:text> </xsl:text>
    18. <xsl:value-of select="count(Bestellposition)"/>
    19. <xsl:text>
    20. </xsl:text>
    21. </xsl:template>
    22. <!-- Sehr wichtig: -->
    23. <xsl:template match="text()|@*" />
    24. </xsl:stylesheet>
    Alles anzeigen


    Der Clou dabei ist das letzte leere Template: damit teilst du ihm mit, das er Text nicht standardmäßig rausschreiben soll.
    Interessant könnte hierfür die folgende URL sein: logic.at/staff/reini/lva5.pdf
    Die Info findest du auf Seite 7, untere Slide
  • Vielen Dank für deine Hilfe :D

    PS: Irgendwie bekomme ich die aber nicht schön sortiert untereinander...Also schön formatiert in einer Spalte.Mache ich irgendwas falsch?


    z.B so :
    1234568 20030416 20030530 3
    AB012345 20030528 20030615 4 <- der hier wird immer verschoben angezeigt
    1234567 20030415 20030720 2
    X54367 20030415 20030731 7
    1234569 20030418 20030920 0

    mfg