Foros del Web » Programación para mayores de 30 ;) » Programación General »

XQuery para filtrar XML

Estas en el tema de XQuery para filtrar XML en el foro de Programación General en Foros del Web. Hola, tengo el siguiente XML @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código HTML: Ver original <organization id = "56938" >     <group id = "ID1" >     ...
  #1 (permalink)  
Antiguo 04/03/2010, 02:27
Avatar de jerkan  
Fecha de Ingreso: septiembre-2005
Mensajes: 1.607
Antigüedad: 18 años, 7 meses
Puntos: 19
XQuery para filtrar XML

Hola, tengo el siguiente XML
Código HTML:
Ver original
  1. <organization id="56938">
  2.     <group id="ID1">
  3.         <person id="123"displayName="marcos">
  4.             <person id="22334" state="BANNED" displayName="david"></person>
  5.         </person>
  6.         <person id="22334" state="BANNED" displayName="david"></person>
  7.         <person id="22335" displayName="david"></person>
  8.         <person id="22337" displayName="david"></person>
  9.         <person id="22338" state="BANNED" displayName="david"></person>
  10.     </group>
  11. </organization>
y necesito una xquery que me devuelva ese mismo XML pero sin los person que tengan el atributo state.
Como veis, es posible que una person esté relacionado con otro person de manera anidada.

Yo lo he intentado así pero no hay manera:
Código HTML:
Ver original
  1. for $iterator in doc('data')/organization
  2.     where $iterator//person[not(state)]
  3.     return  
  4.         $iterator/*

Alguna idea?
  #2 (permalink)  
Antiguo 05/03/2010, 05:01
Avatar de jerkan  
Fecha de Ingreso: septiembre-2005
Mensajes: 1.607
Antigüedad: 18 años, 7 meses
Puntos: 19
Respuesta: XQuery para filtrar XML

Conseguí solucionarlo con este código:
Código HTML:
Ver original
  1. <organization>
  2. {
  3. for $iterator in doc('file.xml')/association
  4. return
  5. <group root="{$iterator/association/@root}">
  6. {
  7. for $personIterator in $iterator/group/person
  8. where $personIteratornot(@state) and $personIteratornot(.//person/@state)
  9. return $personIterator
  10. }
  11. </group>
  12. }
  13. </organization>

Etiquetas: filtrar, xml
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:45.