what standard que open how files example archivo and xml cross-reference

standard - xml file example



XML-Referencia a otros archivos XML (5)

Normas

XInclude es el único estándar con cualquier nivel de soporte.

  • Varios editores de XML, incluidos Oxygen y xmlspy admiten.
  • Varios analizadores XML, incluido Xerces , también lo admiten, y también hay puertos .net.
  • Varias herramientas XML, como Saxon soportan, tanto para Java como para .net .

Hay algunos buenos ejemplos de uso en el artículo de Wikipedia en XInclude .

XLink es un estándar relacionado tangencialmente, no realmente para incluir documentos, sino más para citar partes dentro de otros documentos. No está bien soportado.

Alternativas

Si te preocupa el tamaño, hay varias formas de hacerlo:

  • Utilice un procesador XML de transmisión por secuencias , como DataDirect XQuery (o, en menor medida, Saxon 9.3 EE , que solo guarda la información necesaria en la memoria para resolver la consulta).
  • Utilice una base de datos XML , como MarkLogic o eXist .
  • Use un archivo XML para enumerar los nombres de otros archivos XML, que un programa escrito en XQuery o XSLT luego lee usando la función doc() y los procesos. (A menos que su procesador esté transmitiendo o tenga una forma de deshacerse de los documentos con los que está terminado, como lo hace DDXQ o Saxon , todavía tendrá problemas con el mismo tamaño).

Soy nuevo en XML, por lo que esta puede ser una pregunta bastante fácil de responder. Me preguntaba si existe una forma estándar de referenciar archivos XML externos desde otros archivos XML. Déjame dar un ejemplo. Digamos que tiene un archivo que define un solo objeto que contiene una gran cantidad de datos:

<person> <name>John</name> <age>18</age> <hair>Brown</hair> <eyes>Blue</eyes> </person>

Por el bien de esta pregunta, simule que esa persona tiene mucha otra información. Imagina que el archivo es como 10 MB.

Ahora, digamos que tiene otro archivo XML que define un grupo:

<group> <person> <name>John</name> <age>18</age> <hair>Brown</hair> <eyes>Blue</eyes> </person> <person> <name>Kim</name> <age>21</age> <hair>Blue</hair> <eyes>Green</eyes> </person> <person> <name>Sean</name> <age>22</age> <hair>Black</hair> <eyes>Brown</eyes> </person> </group>

Como puede ver, si la persona fuera muy grande, el archivo de grupo sería extremadamente grande. Entonces, si tenemos algo como John.xml , ¿hay una forma estándar de referenciarlo en Group.xml sin definir explícitamente todos los datos de John? Estoy seguro de que este es un tema muy amplio, así que siéntase libre de vincularme a cualquier página web relevante. ¡Gracias!


Hay un par de formas "estándar" de hacer lo que quieres, a saber, XLink y XInclude (dependiendo de lo que quieras hacer), aunque debes asegurarte de tener un procesador que pueda extraer las referencias externas. La mayoría de las bibliotecas XML no vienen con esta funcionalidad ya habilitada.

Entonces podrías hacer algo like :

<group> <personlink xlink:href="person.xml" xlink:show="embed" xmlns:xlink="http://www.w3.org/1999/xlink"/> </group>

Sin embargo, probablemente no necesites esto. Si necesita un subconjunto de información de un documento grande, puede usar XSLT o XQuery fácilmente para recortar las partes que necesita. Puede utilizar este enfoque, junto con el análisis de SAX, que se basa en eventos y no tiene todo el documento en la memoria, para escalar su aplicación y manejar documentos bastante grandes.

Incluso mientras utilizaba DOM, no empecé a ver problemas con documentos grandes hasta que estaban en el rango de decenas de megabytes.


No hay un estándar (funcionará en cada analizador) para importar nodos como ese. Pero podría ahorrar espacio cambiando algunos de sus elementos en atributos

<group> <person name=''John'' age=''18'' hair=''Brown'' eyes=''Blue'' /> <person name=''Kim'' age=''21'' hair=''Blue'' eyes=''Green'' /> <person name=''Sean'' age=''22'' hair=''Black'' eyes=''Brown'' /> </group>


Um, no hay limitaciones de tamaño en los archivos xml. No debes preocuparte por los tamaños extremadamente grandes. Pero recuerda; Xml es un formato de intercambio de datos, no un formato de base de datos. Utiliza xml para intercambiar datos entre diferentes aplicaciones / servicios.


Here está la especificación XML para DTD, en la que puede declarar referencias de entidad.

Un documento simple como:

<!DOCTYPE test [ <!ENTITY ref SYSTEM "file:///C:/test.txt" > ]> <test> &ref; </test>

Y archivo: /// C: /test.txt siendo:

<blah> Fee Fi Fo Fum </blah>

expandirá el documento original a:

<test> <blah> Fee Fi Fo Fum </blah> </test>

Creo que los analizadores XML no validados no están obligados a ampliar las referencias, así que tenga cuidado.

Además, no olvide poner standalone = "no" en XMLDecl. (No tener el atributo independiente supone que es "no", pero es mejor ponerlo allí ...)