De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

En informática , RELAX NG ( REGULAR LAnguage para XML Next Generation ) es un lenguaje de esquema para XML; un esquema RELAX NG especifica un patrón para la estructura y el contenido de un documento XML. Un esquema RELAX NG es en sí mismo un documento XML , pero RELAX NG también ofrece una popular sintaxis compacta no XML. [1] En comparación con otros lenguajes de esquemas XML, RELAX NG se considera relativamente simple.

Fue definido por una especificación comité de la OASIS comité técnico RELAX NG en 2001 y 2002, basados en Murata Makoto 's RELAX y James Clark ' s TREX , [2] [3] [4] y también por la segunda parte de la comunidad internacional estándar ISO / IEC 19757: Lenguajes de definición de esquemas de documentos ( DSDL ). [5] [6] ISO / IEC 19757-2 fue desarrollado por ISO / IEC JTC1 / SC34 y publicado en su primera versión en 2003. [7]

Ejemplos de esquema [ editar ]

Supongamos que queremos definir un esquema de marcado XML extremadamente simple para un libro: un libro se define como una secuencia de una o más páginas; cada página contiene solo texto. Una instancia de documento XML de muestra podría ser:

<libro>  <página> Esta es la página uno. </page>  <page> Esta es la página dos. </page> </book>

Sintaxis XML [ editar ]

Un esquema RELAX NG se puede escribir en una estructura anidada definiendo un elemento raíz que contiene más definiciones de elementos, que pueden contener definiciones incrustadas. Se escribiría un esquema para nuestro libro en este estilo, utilizando la sintaxis XML completa:

<element  name = "book"  xmlns = "http://relaxng.org/ns/structure/1.0" >  <oneOrMore>  <element  name = "page" >  <text />  </element>  </oneOrMore> </ elemento>

La estructura anidada se vuelve difícil de manejar con muchos subniveles y no puede definir elementos recursivos, por lo que la mayoría de los esquemas RELAX NG complejos usan referencias a definiciones de patrones con nombre ubicadas por separado en el esquema. Aquí, un "esquema plano" define precisamente el mismo marcado de libro que el ejemplo anterior:

<grammar  xmlns = "http://relaxng.org/ns/structure/1.0" >  <start>  <element  name = "book" >  <oneOrMore>  <ref  name = "page" />  </oneOrMore>  </ element >  </start>  <define  name = "page" >  <element  name = "page" >  <text />  </element>  </define> </grammar>

Sintaxis compacta [ editar ]

La sintaxis compacta RELAX NG es un formato no XML inspirado en la forma extendida de Backus-Naur y las expresiones regulares , diseñado para que pueda traducirse sin ambigüedades a su contraparte XML, y viceversa, con una correspondencia uno a uno en estructura y significado. de la misma manera que Simple Outline XML (SOX) se relaciona con XML . Comparte muchas características con la sintaxis de DTD . Aquí está la forma compacta del esquema anterior:

libro de elementos {  página de elementos { texto } + }  

Con patrones con nombre, esto se puede acoplar a:

inicio =  elemento libro { página + }
página =  elemento página {  texto  }

Un analizador compacto RELAX NG tratará estos dos como el mismo patrón.

Comparación con el esquema XML del W3C [ editar ]

Aunque la especificación RELAX NG se desarrolló aproximadamente al mismo tiempo que la especificación del esquema XML del W3C , se podría decir que esta última era más conocida y más ampliamente implementada en analizadores y editores XML tanto de código abierto como propietarios cuando se convirtió en una recomendación del W3C en 2001. Desde luego, sin embargo, el soporte RELAX NG se ha abierto camino cada vez más en el software XML, y su aceptación se ha visto favorecida por su adopción como esquema principal para lenguajes de marcado populares centrados en documentos como DocBook , las directrices TEI , OpenDocument y EPUB .

RELAX NG comparte con W3C XML Schema muchas características que los distinguen de los DTD tradicionales : escritura de datos , soporte de expresiones regulares , soporte de espacio de nombres , capacidad para hacer referencia a definiciones complejas.

Extensiones de nombre de archivo [ editar ]

Por convención informal, los esquemas RELAX NG en la sintaxis normal generalmente se nombran con la extensión de nombre de archivo ".rng". Para esquemas en la sintaxis compacta, se usa la extensión ".rnc".

Determinismo [ editar ]

Los esquemas Relax NG no son necesariamente "deterministas" o "inequívocos".

Conversión de Relax NG a DTD [ editar ]

Los esquemas Relax NG se pueden convertir en DTD aplicando Trang, que se puede encontrar en: [1] . El manual de Trang se encuentra en [2] . Tenga en cuenta que Trang no puede convertir el esquema OASIS DITA 1.3 a DTD, fallando con mensajes como:

 lo siento, no se admite la combinación de definiciones con combine = "choice"

Ver también [ editar ]

  • Esquemas XML
  • DTD (Definición de tipo de documento)
  • Descripción de la estructura del documento
  • Esquema XML (W3C)
  • Schematron
  • IMPAR (Un documento lo hace todo)
  • SXML

Referencias [ editar ]

  1. ^ Sintaxis compacta RELAX NG
  2. ^ James Clark. "TREX - Expresiones regulares de árbol para XML -" TREX se ha fusionado con RELAX para crear RELAX NG. " " . Consultado el 28 de diciembre de 2009 .
  3. Murata Makoto (3 de abril de 2002). "RELAX (descripción del lenguaje regular para XML) -" RELAX NG de OASIS. Es un lenguaje de esquema creado unificando RELAX Core y TREX. " " . Consultado el 28 de diciembre de 2009 .
  4. ^ "TREX y RELAX unificados como RELAX NG, una especificación de validación de lenguaje XML ligero" . Páginas de portada. 2001-06-05 . Consultado el 28 de diciembre de 2009 .
  5. ^ Especificación RELAX NG
  6. ^ Comité Técnico RELAX NG
  7. ^ ISO. "ISO / IEC 19757-2: 2003 - Tecnología de la información - Lenguaje de definición de esquemas de documentos (DSDL) - Parte 2: Validación basada en gramática regular - RELAX NG" . ISO . Consultado el 28 de diciembre de 2009 .

Enlaces externos [ editar ]

  • Página de inicio de RELAX NG
  • "El diseño de RELAX NG" por James Clark
  • Tutorial RELAX NG para la sintaxis XML
  • Tutorial RELAX NG para la sintaxis compacta
  • Patrones de diseño para estructurar documentos XML
  • RELAX NG Book de Eric van der Vlist, publicado bajo la licencia de documentación libre GNU
  • Relax NG Reference de ZVON
  • Proyectos de la comunidad de RELAX NG Java en java.net
  • Kit de herramientas Java XML de código abierto Sun Multi-Schema Validator (MSV)
  • Programa C de código abierto del validador de sintaxis compacto Relax NG
  • Conversor basado en web XSD to Relax NG Converter
  • https://github.com/relaxng/jing-trang