verenice: XSL-FO Fehlermeldung: "Es wurde ein Knotentest erwartet, der..."

Hallo,
ich habe gerade ein XSL-FO-Beispiel aus einem Buch abgetippt und habe folgende Fehlermeldung erhalten, mit der ich nichts anfangen kann.
Ich habe schon mehrfach das Beispiel aus dem Buch mit dem Quelltext, den ich erhalten habe, verglichen und ich finde keinen Fehler. Bei der Syntax-Prüfung in AltovaXMLSpy bekomme ich auch die Meldung, dass die Syntax in Ordnung ist.

[Error]javax.xml.transform.TransformerConfigurationException:javax.xml.
transform.TransformerException:javax.xml.transform.TransformerException:
"Es wurde ein Knotentest erwartet, der entweder NCName:* oder QName entspricht."

Der Quelltext:

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

<xsl:output encoding="ISO-8859-1" method="xml" />

<xsl:template match="">
fo:root
<!-- Dokumentvorlagen-->
fo:layout-master-set
<!-- Seitenvorlage -->
<fo:simple-page-master master-name="A4"       page-height="29.7cm"       margin-top="1cm" margin-bottom="2cm     margin-left="2.5cm" margin-right="2.5cm">
    <!-- ... -->
    <!-- Druckbare Fläche -->
<fo:region-body region-name="xsl-region-body"
          margin-bottom="1.5cm" margin-left="3.5cm"    margin-top="1.5cm" margin-right="3.5cm"     background-color="wheat">
<xsl:apply-templates />
</fo:region-body>
</fo:simple-page-master>
<!-- Seitenverlaufsvorlage-->
<fo:page-sequence-master master-name="Kapitel">    <fo:repeatable-page-master-reference master-reference="A4"  maximum-repeats="8" />
</fo:page-sequence-master>
</fo:layout-master-set>
<!-- Seitenverlauf-->
<fo:page-sequence master-reference="Kapitel">
<fo:flow flow-name="xsl-region-body" background-color="thistle">
<fo:block font-family="Times" font-size="15pt">
<!-- Hier wird das Template Textschleife aufgerufen -->
<xsl:call-template name="Textschleife">
<xsl:with-param name="Wert" select=" 'Dies ist Blindtext. Er braucht nicht gelesen zu werden.' " />
<xsl:with-param name="Grenze" select="100" />
</xsl:call-template>
</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
</xsl:template>

<!-- Vorlage Textschleife -->
<xsl:template name="Textschleife">
<xsl:param name="Grenze" />
<xsl:param name="Zaehler" select="1" />
<xsl:param name="Wert" select=" ' ' " />
<xsl:value-of select="$Wert" />
<xsl:if test="not($Grenze=$Zaehler)">
<xsl:call-template name="Textschleife">
<xsl:with-param name="Zaehler" select="$Zaehler+1" />
<xsl:with-param name="Wert" select="$Wert" />
<xsl:with-param name="Grenze" select="$Grenze" />
</xsl:call-template>
</xsl:if>
</xsl:template>

</xsl:stylesheet>

Vielen Dank schon mal für Eure Hilfe.
Viele Grüße,
verenice

  1. Hallo,

    ich habe gerade ein XSL-FO-Beispiel aus einem Buch abgetippt und habe folgende Fehlermeldung erhalten, mit der ich nichts anfangen kann.
    Ich habe schon mehrfach das Beispiel aus dem Buch mit dem Quelltext, den ich erhalten habe, verglichen und ich finde keinen Fehler. Bei der Syntax-Prüfung in AltovaXMLSpy bekomme ich auch die Meldung, dass die Syntax in Ordnung ist.

    [Error]javax.xml.transform.TransformerConfigurationException:javax.xml.
    transform.TransformerException:javax.xml.transform.TransformerException:
    "Es wurde ein Knotentest erwartet, der entweder NCName:* oder QName entspricht."

    <xsl:param name="Wert" select=" ' ' " />
    müsste:
    <xsl:param name="Wert" select="' '" /> lauten, falls du ein Leerzeichen hane willst oder
    <xsl:param name="Wert" select="''" /> bzw. <xsl:param name="Wert" /> falls du nichts haben willst.

    Grüße
    Thomas

    1. das gesagte gilt natürlich auch für:

      <xsl:with-param name="Wert" select=" 'Dies ist Blindtext. Er braucht nicht gelesen zu werden.' " />

      was: <xsl:with-param name="Wert" select="'Dies ist Blindtext. Er braucht nicht gelesen zu werden.'" /> sein sollte.

      Thomas

      1. Hallo Thomas,
        vielen Dank für Deine schnellen Antworten.
        Ich habe zwischen " und ' jetzt einfach das Leerzeichen weggenommen. Leider bekomme ich immer noch die Fehlermeldung.
        Hast Du vielleicht noch eine andere Idee, woran es liegen könnte?

        Vielen Dank.

        Viele Grüße, verenice

  2. Hallo,

    Der Quelltext:

    Ich habe zwar keine Ahnung von XSL-FO, aber bist Du sicher, dass

    <xsl:template match="">

    ^hier ein Backslash stehen darf?

    viele Grüße

    Axel

    1. Hallo Axel,
      vielen Dank!:o)
      Das war mein Problem. Es funktioniert jetzt.

      Viele Grüße, verenice