XSLT e XQuery su input html non valido, pezzi di URI sembrano entità
Domanda
sto usando sassone 9 per analizzare le fonti HTML non validi. In particolare il codice html ha valori href come il seguente:
Ricevo errori:
"Errore riportato dal parser XML: Il riferimento a entità 'g_varID' deve terminare con il ';' delimitatore. "
Il parser XML sta leggendo la stringa "& g_varID" e lamenta che ci dovrebbe essere un ";" per delimitare l'entità. Ma, naturalmente, questo non è inteso come un'entità HTML -. È solo un pezzo di un URI
Come faccio a dire al parser di ignorarlo? Nota:. Sto utilizzando non-schema-aware sassone, non Saxon-SA
Soluzione
Assicurarsi di avere una corretta DOCTYPE XHTML. Secondo il xhtml1-strict.dtd che sto guardando, l'attributo href è dichiarato CDATA, non PCDATA, che significa letteralmente e è perfettamente ok e non deve essere analizzato come un'entità.
Altri suggerimenti
Se il codice HTML non è XML, allora come vi aspettate qualsiasi processore XML per elaborarlo?
Come accennato in precedenza, questo non è XML valido, è HTML. Questo particolare problema, però, è uno che HTML ordinata pulisce in modo predefinito: http: // www. w3.org/People/Raggett/tidy/ . Usatelo con i seguenti argomenti della riga di comando per convertire HTML in XHTML:
tidy -asxhtml foo.html > foo.xhtml
E allora si dovrebbe essere in grado di eseguire attraverso il vostro XSLT.