xml, html oder xhtml in xsl: output: Welches ist die bessere Wahl?

8

Aus historischen Gründen haben wir eine Mischung aus

%Vor%

und

%Vor%

und

%Vor%

innerhalb einer Include-Hierarchie von XSL-Dateien. Jetzt wollen wir umgestalten, damit alle XSL-Dateien die gleiche Ausgabemethode verwenden.

Am Ende wollen wir XHTML-Ausgabe erzeugen, also nehme ich an, dass letztere die beste Wahl wäre.

Aber was sind die Unterschiede zwischen diesen drei Ausgabemethoden und welche würden Sie für welche Art von Lösung verwenden?

Bearbeiten: Ich verwende XSLT 2.0

    
B.E. 15.12.2009, 09:38
quelle

3 Antworten

4

Ich fand die Antwort durch Lesen der XSLT 2.0-Spezifikation ( XSLT 2.0 und XQuery 1.0 Serialization ).

  

Gegeben eine leere Instanz eines XHTML   Element, dessen Inhaltsmodell nicht vorhanden ist   LEER (z. B. ein leerer Titel oder   Abschnitt) der Serializer darf nicht verwenden   die minimierte Form. Das heißt, es muss   Ausgabe <p></p> und nicht <p /> .

     

Gegeben ein XHTML-Element, dessen Inhalt   Modell ist leer, der Serialisierer muss   Verwenden Sie die minimierte Tag-Syntax, z   Beispiel <br /> , als Alternative   Syntax <br></br> erlaubt von XML   gibt in vielen Fällen ungewisse Ergebnisse   vorhandene Benutzeragenten Der Serializer   MUSS ein Leerzeichen vor dem einfügen   Nachlauf / & gt; <br /> , <hr />   und <img src="karen.jpg" alt="Karen" /> .

     

Der Serialisierer darf die Entität NICHT verwenden   Referenz &apos; , die, obwohl   legal in XML und daher in XHTML,   ist nicht in HTML definiert und ist nicht   von allen HTML-Benutzeragenten erkannt.

     

Der Serializer sollte Namespace ausgeben   Deklarationen in einer Weise, die ist   im Einklang mit den Anforderungen von   die XHTML-DTD, wenn dies möglich ist. Das   XHTML 1.0 DTDs erfordern die Deklaration   xmlns="http://www.w3.org/1999/xhtml"   auf dem HTML-Element erscheinen, und   nur auf dem html-Element. Das   Serializer MUSS Namespace ausgeben   Deklarationen, die konsistent sind mit   die Namespace-Knoten in der   Ergebnisbaum, aber es muss vermieden werden   Ausgabe redundanter Namespaces   Deklarationen über Elemente, bei denen die DTD   würde sie ungültig machen.

Das heißt, die Antwort verwendet <xsl:output method="xhtml"> .

    
B.E. 16.12.2009, 09:24
quelle
8

HTML wird als HTML serialisiert, daher ist die Ausgabe möglicherweise kein wohlgeformtes XML. Wenn Sie nur an Browser senden und nicht daran interessiert sind, als XML zu analysieren, kann das für Sie funktionieren.

XML wird als XML serialisiert, so dass die Ausgabe wohlgeformt ist, aber Sie können bei der Ausgabe Probleme mit Browsern feststellen. Kleine Dinge wie die selbstschließenden Elemente <script /> und <div /> . Um dieses Problem zu vermeiden, müssten Sie Spiele spielen, wie das Hinzufügen von Kommentaren innerhalb des Elements (z. B. <script src="someJSFile.js"><!--don't close my script tag --></script> )

Wenn Sie über eine XSLT 2.0-Engine verfügen und eine gut formatierte HTML-Ausgabe möchten, ohne sich Sorgen darüber machen zu müssen, wie einige Elemente serialisiert werden, verwenden Sie XHTML.

    
Mads Hansen 15.12.2009 12:07
quelle
3

Soweit ich weiß, gibt es kein method:xhtml für die xsl:output -Direktive in xslt 1.0.

wc3schools stimmt dem zu.

Da XHTML ein XML-Dialekt ist, würde ich das verwenden.

Wenn Sie jedoch xslt 2.0 verwenden, können Sie auch xhtml verwenden. , denn das gibst du aus.

    
Oded 15.12.2009 09:47
quelle

Tags und Links