Announcement

Collapse
No announcement yet.

[XML & XSLT] Lerne gerade, finde aber den Fehler nicht :(

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • [XML & XSLT] Lerne gerade, finde aber den Fehler nicht :(

    Hallo Leute, ich mache derzeit gerade nen Kurs zum Database-Developer (IHK). (Perl, SQL, XML, XSLT ua.)

    Heute haben wir mit XSLT angefangen, gestern mit XML.

    Habe nun ein Problem, welches ich einfach nicht gelöst bekomme.
    Es ist sicherlich super einfach, ich verstehe soweit auch alles, was ich mache bzw. machen soll. Allerdings vermag ich den Fehler nicht zu finden.

    Aufgabe: soll in einer XML-Datei wahllos 6 Zahlen eines W20 (20-seitiger Würfel) definieren, wovon ein Wert zu hoch ist, also höher als die Zahl 20.

    Diese soll mir dann über die XSL-Datei dann verarbeitet und im Browser per Meldung als falsch ausgegeben werden.

    Bitte schaut mal eben drüber, ihr findet den (für Euch lachhaft einfachen Fehler) sicher schnell...

    Hier meine Codes:

    wuerfel.xml
    Code:
    <?xml version="1.0" encoding="utf-8"?>
    <?xml-stylesheet type="text/xsl" href="wuerfel.xsl" ?>
    <w20>
      <wuerfelzahl> 12 </wuerfelzahl>
      <wuerfelzahl>  9 </wuerfelzahl>
      <wuerfelzahl> 14 </wuerfelzahl>
      <wuerfelzahl> 20 </wuerfelzahl>
      <wuerfelzahl>  5 </wuerfelzahl>
      <wuerfelzahl> 39 </wuerfelzahl>
    </w20>
    wuerfel.xsl
    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>
          <xsl:apply-templates />
        </body>
        </html>
      </xsl:template>
      
      <xsl:template match="wuerfelzahl">
        <xsl:variable name="aktuellerwert" select="."/>
         <xsl:if test="$aktuellerwert &gt; 20">
          <xsl:message terminate="yes">
           <xsl:text>Die Zahl ( </xsl:text>
           <xsl:value-of select="." />
           <xsl:text> ) ist zu gross!</xsl:text><br />
          </xsl:message>
         </xsl:if>
        <xsl:value-of select="." /><br />
      </xsl:template>
    
    </xsl:stylesheet>
    Euch vielen Dank!!!
    Zuletzt editiert von Thyrius; 06.02.2013, 01:29.
    01001001 01100011 01101000 00100000 01100111 01110010 11111100 11011111 01100101 00100000 01000100 01101001 01100011 01101000 00100000 00100001

  • #2
    Bei mir funktioniert das Beispiel sowohl im IE als auch mit XMLSPY
    Christian

    Comment


    • #3
      Guten Morgen, Christian.

      Erstmal vielen Dank dafür, dass Du Dich meinem Problem angenommen hast.

      Bei Firefox 18.01 gibt er mir eine Fehlermeldung aus: "Fehler während der XSLT-Transformation: Die XSLT-Transformation wurde durch <xsl:message> unterbrochen."
      Bei IE 9 gibt er mir alle Zahlen aus, inkl. der 39.

      In beiden Fällen sollte er mir aber Die Abbruch-Meldung geben, dass die 39 zu hoch ist.

      Hab mir gerade mal die Testversion von XMLSPY installiert und angesehen. Bei mir sagt er zwar, alles sei in Ordnung, aber richtig ausgeben tut er es auch nicht.
      Ich verstehs nicht.
      01001001 01100011 01101000 00100000 01100111 01110010 11111100 11011111 01100101 00100000 01000100 01101001 01100011 01101000 00100000 00100001

      Comment


      • #4
        Sicherlich gibt es einen Abbruch, denn du hast ja angegeben, dass terminiert werden soll. Ev. wird das von dir gewünschte Ergebniss erreicht; wenn du
        xsl:message terminate="yes"
        /xsl:message
        löscht
        Christian

        Comment


        • #5
          Also, dann gibt er mir aus:

          12
          9
          14
          20
          5
          Die Zahl ( 39 ) ist zu gross!
          39

          Wenigstens das funktioniert. Scheinbar ist das wirklich ein Problem der <xsl:message>-Funktion.
          Hab gerade gesehen, dass der Fehler wohl schon länger bekannt sein soll.

          Komisch...
          01001001 01100011 01101000 00100000 01100111 01110010 11111100 11011111 01100101 00100000 01000100 01101001 01100011 01101000 00100000 00100001

          Comment

          Working...
          X