2013-05-20 16 views
19

Ho recentemente lavorato con XPath e ho cercato informazioni su quali browser supportano XPath 2.0 senza molta fortuna. Il meglio che ho trovato è stato il query technologies comparison table di vari motori di rendering.Quali browser supportano Xpath 2.0?

Questo chiaramente mi dice che Firefox e IE (tutte le versioni di entrambi) non supportano XPath 2.0, ma per quanto riguarda gli altri motori di rendering per Chrome, Safari, ecc.? Qualcuno ha qualche informazione su questo o sa dove lo si può trovare?

risposta

5

Non ne conosco e lo official list of implementations non ne include uno.

Un'alternativa - ovviamente meno performante di un'implementazione nativa - sarebbe XQIB che è un'implementazione XQuery in JavaScript. XPath 2.0 è completamente incluso come sottoinsieme in XQuery 1.0, quindi sarai in grado di utilizzare tutte le funzionalità di XPath 2.0 (e altro) in tutti i browser con supporto JavaScript.

Un short sample tratto dal loro sito web su come usarlo:

<script type="text/javascript" src="mxqueryjs/mxqueryjs.nocache.js"></script> 
<script type="application/xquery"> 
    b:alert(
    let $x := <a><b>2</b><c>4</c></a> 
    return xs:string($x/b * $x/c) 
) 
</script> 
1

C'è anche Saxon CE, un'implementazione JavaScript open-source di XSLT 2.0. Poiché XSLT 2.0 include XPath 2.0, questo fornisce un'implementazione XPath 2.0 nel browser. Tuttavia non è integrato.

Ho appena provato la versione attuale di Safari (7.0.6) e non ha accettato il XPath 2.0 funzioni che ho dato:

> document.evaluate("starts-with('foo', 'f')", document.documentElement, null, 
       XPathResult.BOOLEAN_TYPE, null); 
< XPathResult 

> document.evaluate("ends-with('foo', 'o')", document.documentElement, null, 
       XPathResult.BOOLEAN_TYPE, null); 
< Error: INVALID_EXPRESSION_ERR: DOM XPath Exception 51 

Quindi direi WebKit (in particolare il motore JS , SquirrelFish/Nitro) attualmente non supporta XPath 2.0.