Newsgroup: it.comp.lang.javascript
Titolo: getElementsByTagName in ambito ristretto

ho questa necessità: dato un documento XML vorrei tirare fuori con js un
array di elementi che:
a) hanno un certo tagname
b) sono "discendenti" (per discendenti intendo figli, nipoti, pronipoti, e
cosi via di un dato elemento <pippo id="pippoid">.
Con getElementsByTagName ho in output l'array degli elementi che con un
certo tagname.
Con document.getElementById("pippoid").childNodes , ottengo l'array di tutti
i figli di <pippo>.
Per avere l'array di tutti i discendenti che funzione ho a disposizione?
Come posso selezionare i nodi che soddisfano entrambe
le proprietà a) e b)?
Ciao
--Gabriele

 le proprietą a) e b)?
Provato con:
document.getElementById("pippoid").getElementsByTagName("mytagname")
?
In caso, esiste sempre l'XPath.
-- 
C'ya,
ZER0
  :. job profile - coder.gfxer.webDesigner
"When you have eliminated the impossible, whatever remains,
however improbable, must be the truth." (S.H.)

 In caso, esiste sempre l'XPath.
Sto lavorando con Mozilla; con IE utilizzerei qualcosa tipo:
mydoc.selectNodes("..xpath...")
Per Mozilla c'č qualche cosa di analogo?
Perché se potessi utilizzare xpath... sarebbe certo piů interessante la
questione...
--Gabriele

 Per Mozilla c'č qualche cosa di analogo?
Si, in accordo con gli standard del W3C:
http://www.w3.org/TR/DOM-Level-3-XPath/xpath.html


 
http://www.w3.org/TR/DOM-Level-3-XPath/xpath.html
Ringrazio intanto ZERO per i suggerimenti sempre tempestivi e puntuali; ma
forse per colpa mia dal documento sopra indicato non è che ci ho capito
molto. Mi manca come tradurre in pratica quanto descritto; ad esempio
attraverso qualche esempio.
Mi spiego meglio:
per fare
     var myarray = mydoc.selectNodes("..xpath...")
    //array contenente i nodi che soddisfano l'xpath
su Mozilla come devo fare?
Vorrei sapere inoltre se qualcuno qui sul NG ha già provato ad usare xpath
su Mozilla, o se per il momento è solo "teoria".
Ciao
--Gabriele

 su Mozilla, o se per il momento è solo "teoria".
Non e' solo "teoria", ma per il momento - almeno per quanto mi riguarda 
- non ho potuto dedicare a Mozilla il tempo che avrei voluto.. Ho dovuto 
anche fare una pausa su XUL. Che conto, pero', di riprendere al piu' 
presto.


 };
Ho provato questo funzione che da quanto ho capito dovrebbe selezionare il
primo Nodo che soddisfa la szXPath a partire dal nodo contesto.
Solo che mi aspetto che facendo
var xmlNode=document.getElementbyId("pippo").selectSingleNode("/");
mi restituisca il primo dei nodi corrispondenti alla stringa xpath
specificata a prendendo come radice (/) il nodo contesto.
Invece dalle prove che ho fatto mi restituisce il primo dei nodi
corrispondenti all'xpath ma parte dalla radice del documento e non dal nodo
contesto.
Andiamo avanti....
Sempre ritornando su questo vecchio post... vediamo se ho capito, se volessi
definire la selectNodes e basandomi da quanto capito sul documento del w3c
(e quindi veramente ma veramente poco) e sull'esempio sopra riportato:
Node.prototype.selectNodes = function(szXPath){
  var pXPE = new XPathEvaluator();
  var arr = [];
  var res = pXPE.evaluate(szXPath, this, pXPE.createNSResolver(this),
XPathResult.ORDERED_NODE_ITERATOR_TYPE , null);
  while (res.iterateNext() == null) {
          arr[arr.length] = res.singleNodeValue;
  }
return (arr);
};
Ovviamente non funziona....
--Gabriele

 Ovviamente non funziona....
"Il ragazzo e' intelligente ma non si applica" :P Scherzi a parte, 
studia maggiormente il documento del W3C, soprattutto se l'hai capito 
poco. E' tutto scritto la'.
Stai attento, perche' devi seguire le indicazioni dell'XPath 1.0 (che 
e' quello supportato da Mozilla).
Al limite appena ho un attimo di tempo vedo di buttarci un occhio, ma ti 
avevi postato la funzione del selectSingleNode proprio come spunto per 
cercare di comprendere meglio il documento del W3C e farti muovere i 
primi passi da solo.
