Announcement

Collapse
No announcement yet.

Erzwingen der Empty Tag Syntax in XSLT ?

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

  • Erzwingen der Empty Tag Syntax in XSLT ?

    Hallo !
    <p>
    Weiß jemand von Euch, ob man die Empty Tag Syntax bei einer XSLT-Transformation erzwingen kann ?
    </p>
    <br>
    Beispiel Stylesheet:
    <p>
    ...
    <br>
    <xsl:element name="ElementA">
    <br>
    <xsl:attribute name="type">bla</xsl:attribute>
    <br>
    </xsl:element>
    <br>
    ...
    <br>
    <br>
    Ausgabe nach der Transformation:
    <br>
    <ElementA type="bla">
    <br>
    </ElementA>
    <br>
    <br>
    Ich möchte aber folgende Ausgabe:
    <br>
    <ElementA type="bla"/>
    </p>
    <p>
    Ich weiß, daß syntaktisch die erste Variante richtig ist, hätte aber doch gerne die zweite Variante !
    <br>
    Ist das irgendwie über das Stylesheet mit XSL möglich ?

  • #2
    Moin,

    über <i><xslutput method="..."/></i> kannst Du die Ausgabe im Ergebnisdokument steuern.</br></br>

    <b><u><xslutput method="xml" /></u></b></br>
    Ausgabe: <ElementA type="bla"/></br></br>

    <b><u><xslutput method="html" /></u></b></br>
    Ausgabe: <ElementA type="bla"></ElementA></br></br>

    Bei einer Ausgabe als HTML werden die leeren Elemente durch die HTML 4-konforme Schreibweise substituiert. In Deinem Fall würde ich also <i>><xslutput method="xml" /></i> wählen.</br></br>

    Ich hoffe, dass ich Dir helfen konnte.</br></br>

    Cu</br></br>

    PS: Die Ausgabe habe ich unter dem Saxon- und XT-Prozessor getestet

    Comment


    • #3
      Hallo Marc !
      <br>
      Vielen Dank für Deine Antwort<br>
      <p>Das ist natürlich die Lösung. Allerdings habe ich eigentlich ein anderes Problem:</p>
      <p>Ich möchte ein XML-Dokument, das die typischen HTML-Entitäten für Umlaute (&auml; &ouml; usw.) enthält, transformieren in ein anderes XML-Dokument. Die Entitäten sollten erhalten bleiben. Stattdessen werden alle Entitäten mit den Umlauten ersetzt. Jetzt habe ich getrickst und html als output-Methode gewählt mit einem künstlichen <xml version...> am Anfang.</p>
      <p>Kennst Du einen Weg, wie die Entitäten bei einer Transformation erhalten bleiben ?</p>
      <p>Gruß<br>Alex</p&gt

      Comment


      • #4
        Moin Alexander,

        sorry dass ich erst jetzt antworte. Ich habe etwas länger nicht hier reingeschaut.

        Eigentlich müsste Dein XSLT-Prozessor bei der Verwendung der typischen HTML-Entitäten für Umlaute (ä ö usw.) im XML-Dokument eine Fehlermeldung ausgeben, da XML diese Entitäten nicht kennt. Allgemein enthält XML nur fünf vordefinierte allgemeine Entity-Referenzen:

        & amp; & </br>
        & lt; < </br>
        & gt; > </br>
        & quot; " </br>
        & apos; ' </br>

        An Stelle der HTML-Entitäten würde ich probieren die Umlaute als Dezimalcode darzustellen. Dieser wird auch von HTML-Browsern korrekt erkannt ( Bsp: & #196 für Ä).

        Des Weiteren könntest Du eine DTD für Deine XML-Dateien anlegen, in der Du allgemeine Entity-Referenzen für die benötigten Umlaute anlegst.

        <u>Beispiel:</u>

        <!ENTITY Ä "& #196">

        Viele Grüße Marc

        PS: Das Leerzeichen zwischen & und # im oberen Text muss jeweils weggelassen werden. Hier habe ich Leerzeichen gesetzt, damit die Entitäten nicht vom Browser ersetzt werden

        Comment

        Working...
        X