2013-07-14 13 views

risposta

6

Esistono 2 XML: XML lessicale e XML analizzato. XPath funziona contro una rappresentazione XML analizzata, come DOM o XDM. È quindi possibile creare XML analizzati da Lexical HTML5, in questo modo è possibile interrogare HTML5 utilizzando XPath.

1

XPath è per interroga un DOM, non analizza il markup. Un DOM può essere generato da un documento HTML, quindi puoi interrogarlo con XPath.

+0

XPath, il linguaggio del percorso XML, è un linguaggio di query per la selezione dei nodi da un documento XML. [Wikipedia]: non c'è ne dom! – user2567191

+0

Tecnicamente, XPath non è definito per operare contro un DOM, ma contro il proprio modello di dati, che in XPath 2.0 è chiamato XDM. Esiste un semplice mapping definito da XML a XDM, ma è anche possibile definire un mapping da HTML5 a XDM. Non esiste una mappatura standard definita per questo, ma per la maggior parte è abbastanza ovvia. –

+0

@ MichaelKay - Cosa intendi con "abbastanza ovvio"? La mappatura dalla serializzazione HTML di HTML5 a DOM non è affatto ovvia. Intendi dire che la mappatura da un'API DOM4 di serializzazione HTML a XDM è "abbastanza ovvia"? – Alohci

2

È possibile con l'enorme avvertenza che probabilmente non dovresti, a meno che tu non abbia anche tu.

Prendere il seguente codice HTML:

<div> 
    <p> Here is a paragraph 
    <p> Here is another, is it inside the first, who knows? 
</div> 

Ora la maggior parte parser HTML accetteranno che i mezzi di sopra di questo:

<div> 
    <p> Here is a paragraph </p> 
    <p> And another, is it inside the first, who knows? </p> 
</div> 

Ora, la XPath /div/p[2] deve restituire "And another..." tuttavia, potrebbe ugualmente essere interpretato nel come:

<div> 
    <p> Here is a paragraph 
     <p> And another, is it inside the first, who knows? </p> 
    </p> 
</div> 

Dove /div/p[2] non restituisce nulla e XPath /div/p/p restituisce "And another...".

HTML non è XML e non ha bisogno di essere ben formato, quindi l'utilizzo di tecnologie XML con HTML può portare a idiosincrasie. Quindi, se riconosci che dovresti essere ok.

Problemi correlati