Announcement

Collapse
No announcement yet.

number - Nummerierung startet bei 0

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

  • number - Nummerierung startet bei 0

    Guten Morgen,

    die Nummerierung von Listen mit 'number' macht mir Kummer. Für das Zurücksetzen des Zählers benutze ich ein Attribut 'reset':

    <nliste>test a</nliste>
    <nliste>test b</nliste>
    <nliste reset="reset">test c</nliste>
    <nliste>test d</nliste>

    <xsl:template match="nliste">

    [...]

    <xsl:number level="any" format="1. " from="nliste[@reset='reset']" count="nliste"/>

    [...]

    </xsl:template>

    Übersetzt mit FOP 0.95, ergibt das die Ausgabe:

    1. test a
    2. test b
    0. test c
    1. test d

    Literatur- und Internetrecherche haben mich nicht weitergebracht. Ich finde keinen Hinweis darauf, dass eine entsprechende Nummerierung überhaupt bei 0 anfangen *kann*.

    Danke vorab fürs Erleuchten,

    Joshua

  • #2
    Versuche es mit einem anderen XSLT-Prozessor oder einer aktuelleren Version des XSLT-Prozessors.

    Comment


    • #3
      Danke für deine Antwort, Martin.

      FOP 1.0 gibt das gleiche.

      IE8:

      0. test a
      0. test b
      0. test c
      1. test d

      Firefox 3:

      . test a
      . test b
      . test c
      1. test d

      Ok, ich mach' was falsch. Verstehe ich das from-Attribut nicht? Was läuft schief? Bin völlig ratlos.

      Comment


      • #4
        Ich erhalte leider auch mit verschiedenen XSLT-Prozessoren unterschiedliche Ergebnisse, da ist xsl: number wohl etwas zu ungenau spezifiziert.
        Welches Resultat willst du denn? Eventuell kann das dann mit Hilfe der count-Funktion erreichen.

        Comment


        • #5
          Ich möchte eine Liste, deren Zählung nach Angabe des reset-Attributes bei 1 beginnt. Derzeit ist es anscheinend so, dass der erste Durchlauf des number-Knotens einen ungültigen Wert liefert, der entweder als 0, oder beim Firefox als leeres Zeichen interpretiert wird.

          Comment


          • #6
            Soll schon für des Element mit reset="reset" der Zähler 1 sein? Oder erst für das folgende Element?

            Comment


            • #7
              Ja, für das Element, für das dieses Attribut angegeben ist. Ich kann kaum glauben, dass es da keine gradlinige Lösung gibt. Wie machen denn andere sowas?

              Comment


              • #8
                Wenn du dein Eingabeformat ändern kannst, so dass das erste Element auch das Attribut hat, dann sollte Saxon 9.2 das gewünschte Resultat liefern. Wenn du also eine Java FOP Implementierung hast, sollte sich der dabei benutzte XSLT-Prozessor (vermutlich Xalan) einfach gegen Saxon 9.2 http://saxon.sourceforge.net/ austauschen lassen.
                Das Beispiel ist in einem Erratum zur XSLT 2.0 Spezifikation angeführt: http://www.w3.org/Bugs/Public/show_bug.cgi?id=5849
                Mit XSLT 1.0 ist die Spezifikation so vage, dass da verschiedene Implementierungen derart inkonsistente Resultate liefern, dass sich vermutlich xsl:number nicht verlässlich nutzen lässt.

                Comment


                • #9
                  Wow, vielen Dank für deine Hilfe, Martin! Ich bin froh, dass es da eine Klärung gab (so habe ich das jetzt interpretiert). Natürlich schade, dass man nun u.U. ältere XSLT-Prozessoren berücksichtigen muss, aber zumindest habe ich damit eine brauchbare Lösung fürs Unternehmen.

                  Viele Grüße,

                  Joshua

                  Edit: Rückmeldung - saxon9he.jar in FOP eingebunden, Ergebnis wie gewünscht :-). Thread kann meinetwegen dicht.
                  Zuletzt editiert von Joshua; 04.08.2010, 07:21.

                  Comment

                  Working...
                  X