Relax NG

Anuncio
Relax NG
Pablo Prol Sobrado
Alexandre Ramilo Conde
Índice
1. Introducción
2. Relax NG
a.
b.
c.
d.
¿Qué es Relax NG?
Diferencias y similitudes
Modelo de datos
Sintaxis XML vs. compacta
3. Elementos
4. Referencias
1. Introducción
● Validación XML: ¿Cómo?
● Varias soluciones:
○ DTD
○ XML Schemas (XSD)
○ Relax NG
2a. ¿Qué es Relax NG?
● Lenguaje de esquema XML basado en
gramática
● Fusión de RELAX y TREX
● Especifica un modelo de:
○ Estructura
○ Contenido
● En comparación, es simple
● Documento = Objeto
● Archivos de extensión ".rng" o ".rnc"
2b. Diferencias y similitudes
● Simplifica DTDs en general y XSDs en
particular
● No es oficial de W3C, ni siquiera una
recomendación
● No tiene <simpleType> ni <complexType>
● No tiene <minOccurs> ni <maxOccurs>
● Posee elementos y etiquetas especiales
(Número requerido de apariciones, tipo de
dato de un elemento...)
● Similitudes: Tipos de datos, expresiones
regulares, namespaces
2c. Modelo de datos
Un elemento consta de:
● Nombre
● Contexto
● Conjunto de atributos
● Secuencia ordenada de hijos
2d. Sintaxis XML vs. compacta
● Sintaxis XML
<element name="date"
xmlns="http://relaxng.org/ns/structure/1.0">
<text />
</ element>
● Sintaxis compacta
element date { text }
3. Elementos
● <element>
○ Debe de tener la keyword name
○ <element name="date"></ element>
○ element date { }
● <attribute>
○
○
○
○
En sintaxis XML, text es hijo por defecto
<attribute name="type" />
En sintaxis compacta, necesita la keyword text
attribute type { text }
3. Elementos
● <empty>
○ Pueden tener atributos, pero no texto ni hijos
○ Si no hay atributos en un elemento, se debe
especificar
○ <element name="date"><empty /></ element>
○ element date { empty }
● namespace
○ <element name="date"
ns="http://www.example.com/ns" xmlns="http://relaxng.
org/ns/structure/1.0">
○ default namespace = "http://www.example.com/ns"
3. Elementos
● <optional> = ? (En DTD y compacta)
● <oneOrMore> = + (En DTD y compacta)
● <zeroOrMore> = * (En DTD y compacta)
● <choice> = | (En DTD y compacta)
● <group> = () (En DTD y compacta)
3. Elementos
<element name="dates">
<choice>
<group>
<element name=day"><text /></ element>
<element name="month"><text /></ element>
</ group>
<oneOrMore>
<element name="date"><text /></ element>
</ oneOrMore>
</ choice>
</ element>
element dates { (element day { text }, element month { text }) | element date {
text }* }
3. Elementos
● <define>
○ Similar al complexType
○ Sin conflictos por culpa de nombres (Entre definición
y elemento, p.ej.)
○ <define name="date">
<element name="day"><text />< /element>
<element name="month"><text />< /element>
</ define>
○ date = element day { text }, element month { text }
○ Si se emplea, también se debe usar <grammar> y
<start>
3. Elementos
● <grammar>
○ Al usar <define>, se convierte en el elemento
principal del schema
● <start>
○ Similar a DOCTYPE
<grammar xmlns="http://relaxng.org/ns/structure/1.0">
<start>
<ref name="date" />
</ start>
<define name="date">
</ define>
</ grammar>
3. Elementos
● Datatypes
○ Soporte para tipos de datos en librerías externas
<element name="year" xmlns="http://relaxng.org/ns/structure/1.0"
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
<data type="gYear">
<param name="minInclusive">2002</param>
<param name="maxInclusive">2005</param>
</data>
</element>
element year { xsd:gYear {minInclusive="2002" maxInclusive="2005"} }
3. Elementos
● Enumeraciones
<element name="day" xmlns="http://relaxng.org/ns/structure/1.0">
<choice>
<value>m</value>
<value>w</value>
<value>f</value>
</choice>
</element>
element day { "m" | "w" | "f" }
3. Elementos
● Listas
<element name="vertex" xmlns="http://relaxng.org/ns/structure/1.0"
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
<list>
<data type="float"/>
<data type="float"/>
<data type="float"/>
</list>
</element>
element vertex {list {xsd:float, xsd:float, xsd:float}}
4. Referencias
● Web de Relax NG (http://relaxng.org/)
● Especificación de Relax NG en Oasis (https:
//www.oasis-open.org/committees/relaxng/spec-20010811.html)
● Validación XML en la Wikipedia en español
(http://es.wikipedia.org/wiki/Validaci%C3%
B3n_XML)
● Relax NG en la Wikipedia en inglés (http:
//en.wikipedia.org/wiki/RELAX_NG)
4. Referencias
● "Relax NG" de Eric van der Vlist (http:
//books.xmlschemata.org/relaxng/page2.
html)
● "Relax NG, A Schema Language for XML"
de Michael Fitzgerald (http://www.slideshare.
net/booksoverdue/relax-ng-a-schemalanguage-for-xml)
● "XML Schema y DTDs" de Luis Alvarado
(http://www.programacion.
com/articulo/xml_schema_y_dtds_161/4)
Relax NG
Pablo Prol Sobrado
Alexandre Ramilo Conde
¡Gracias por vuestra atención!
¿Preguntas?
Descargar