XML, HTML o XHTML in : Quale è la scelta migliore?
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
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à
'
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.