2011-04-08 21 views
9

¿Puedo usar XQuery para consultar todos los archivos XML en un directorio específico? Todos los archivos XML tienen la misma estructura.XQuery todos los archivos en un directorio específico?

Además, por lo que he visto, puede XQuery muchos archivos pero necesita escribir los nombres de ellos en la consulta. En mi caso, necesito consultar 500 archivos XML con nombres bastante diferentes cada uno. Entonces, ¿hay alguna manera de decir:

for $x in doc("ALL files under a specific directory")/Foo 
return $x/Something 
+0

Buena pregunta, +1. Vea mi respuesta para una solución completa y probablemente la más corta y la más estándar. –

+0

Yo quería entrar en subcarpetas. He encontrado esta opción para la función de recogida en el sitio web de DataDirect:; –

Respuesta

6

utilizar la funcióncollection().

En su Saxon implementation, se puede utilizar:

collection('file:///a/b/c/d?select=*.xml') 
+0

Zorba documentación de la colección [aquí] (http 'select = * = xml Recurse sí?.': //cf.zorba-xquery.com.s3.amazonaws. com/doc/zorba-0.9.4/zorba/html/collections.html) – Pete

1

Para MarkLogic:

for $x in cts:search(fn:doc()/Foo, cts:directory-query("/target/directory/")) 
return $x/Something 
0

utilizar la colección (función).

En su implementación sajona, se puede utilizar: colección ('file: /// a/b/c/d = * seleccione XML.')

Probé este ejemplo en Windows 7 con Saxon HE 9.5.1.5J. El URI toma una forma diferente, por ejemplo: file:/C:/work/GIT/managedSoftwareDoc/experimenting/xQuery? Select = *. Xml

Cuestiones relacionadas