Domanda

Per ragioni storiche abbiamo una miscela di

<xsl:output method="xml">

e

<xsl:output method="html">

e

<xsl:output method="xhtml">

all'interno di un include-gerarchia di file XSL. Ora vogliamo refactoring in modo che tutti i file XSL usano lo stesso metodo di uscita.

Alla fine vogliamo produrre XHTML-output quindi suppongo che quest'ultima sarebbe la scelta migliore.

Ma quali sono le differenze tra queste tre uscite-metodi e che si usa per quale tipo di soluzione?

Modifica che sto utilizzando XSLT 2.0

È stato utile?

Soluzione 2

Ho trovato la risposta, consulta la specifica XSLT 2.0 ( XSLT 2.0 e XQuery 1.0 serializzazione ).

  

Dato un'istanza vuota di XHTML   elemento il cui modello di contenuto non è   EMPTY (per esempio, un titolo vuoto o   paragrafo) il serializzatore non deve utilizzare   la forma minimizzata. Cioè, deve   <p></p> uscita e non <p />.

     

Dato un elemento il cui contenuto XHTML   il modello è vuoto, il serializzatore MUST   usare la sintassi tag minimizzato, per   esempio <br />, come alternativa   sintassi <br></br> consentito da XML   dà risultati incerti in molti   agenti utente esistenti. il serializzatore   DEVE includere uno spazio prima del   trascinamento />, ad esempio <br />, <hr />   e <img src="karen.jpg" alt="Karen" />.

     

Il serializzatore non deve utilizzare l'entità   &apos; riferimento che, pur   legale in XML e quindi in XHTML,   non è definito in HTML e non è   riconosciuto da tutti gli agenti utente HTML.

     

Il serializzatore DOVREBBE spazio dei nomi in uscita   dichiarazioni in un modo che è   coerente con le esigenze di   DTD XHTML se questo è possibile. Il   XHTML 1.0 DTD richiedono la dichiarazione   xmlns = "http://www.w3.org/1999/xhtml"   a comparire sull'elemento html, e   solo sull'elemento html. Il   serializzatore namespace uscita deve   dichiarazioni che sono coerenti con   i nodi dello spazio dei nomi presenti nel   provocare albero, ma si deve evitare   l'output dello spazio dei nomi ridondanti   dichiarazioni sugli elementi dove il DTD   li renderebbe non valido.

Ciò significa che la risposta sta usando <xsl:output method="xhtml">.

Altri suggerimenti

HTML serializzare come HTML, quindi l'uscita non può essere ben formato XML. Se sei solo inviando ai browser e non si preoccupano di essere in grado di analizzare in formato XML allora che può funzionare per voi.

XML sarà serializzare come XML, quindi l'uscita sarà ben formato, ma si può incorrere in alcuni problemi con i browser che utilizzano l'uscita. Piccole cose, come <script /> e <div /> elementi di chiusura di auto. Al fine di evitare tale questione si dovrebbe giocare, come l'aggiunta di commenti all'interno dell'elemento (ad esempio <script src="someJSFile.js"><!--don't close my script tag --></script>)

Se si dispone di un motore XSLT 2.0 e vogliono ben formato di output HTML senza il mal di testa di preoccuparsi di come alcuni elementi vengono serializzati, quindi utilizzare XHTML.

Per quanto ne so, non c'è method:xhtml alla direttiva xsl:output in XSLT 1.0.

wc3schools d'accordo con questo.

Come XHTML è un dialetto XML, questo è ciò che vorrei utilizzare.

Se invece si utilizza XSLT 2.0 , potrebbe come pure usare xhtml, dato che questo è ciò che si sta l'output.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top