7.3. Esquema RelaxNG

Al trabajar con XML-TEI, lo más habitual es el uso de esquemas Relax NG, pues son los que permiten más granularidad y flexibilidad. Relax NG responde a las siglas: REgular LAnguage for XML Next Generation y su especificación fue publicada por el Consortium OASIS el 3 de diciembre de 2001. Poco después, en 2003, se convirtió en norma ISO (ISO/IEC 19757-2:2003) y en 2008 hubo una nueva publicación que remplazaba la segunda: ISO/IEC 19757-2:2008 Document Schema Definition Language (DSDL) – Part 2: Regular grammar-based validation – RELAX NG.

Relax NG se expresa en XML y es relativamente sencillo y fácil de aprender. A diferencia de las DTD, por ejemplo, admite espacios de nombre y por tanto la capacidad de trabajar con uno o con varios. Para una lista más detallada de las ventajas, véase aquí.

Este tipo de esquema propone una determinada estructura para cada una de las instancias XML, proponiendo un modelo concreto de contenido tanto de los elementos como de los atributos. Al interno del esquema, todos los elementos deben ser definidos. Para dar una idea general del tipo de gramática utilizada, veamos por ejemplo de qué manera Relax NG indicaría que el elemento raíz de un documento TEI puede ser doble:

<start>
        <choice>
            <ref name="tei_TEI"/>
            <ref name="tei_teiCorpus"/>
        </choice>
</start>

El elemento <start> indica el elemento raíz, mientras que <choice> indica las opciones de anidación al interno de esa etiqueta. A continuación, deberíamos definir a su vez los elemento <TEI> y <teiCorpus> (de otra manera el esquema no estaría bien formado).

Tomemos otro ejemplo, el elemento <text> tal y como aparece definido en el esquema Relax NG según las Guías Directrices de TEI:

<define name="tei_text">
      <element name="text">
         <!-- Aquí aparece la documentación que concierne al elemento: -->
<a:documentation xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0">contiene 
un único texto de cualquier tipo, sea este unitario o combinado, p.ej. 
un texto en verso o teatral, una recopilación de ensayos, una novela, un diccionario, 
o una fragmento de corpus. [4. 15.1. ]</a:documentation>
<!-- Al interior de <text> podemos encontrar un grupo de elementos: -->
<group>
            <zeroOrMore>
               <!-- En este punto pueden aparecer ninguna o múltiples veces 
una serie de elementos permitidos en cualquier punto de un documento XML-TEI. 
Véase la lista aquí: http://www.tei-c.org/release/doc/tei-p5-doc/es/html/ref-model.global.html -->
<ref name="tei_model.global"/>
            </zeroOrMore>
<optional>
<!-- Opcionalmente podemos tener un elemento <front> al interno de <text> -->
<ref name="tei_front"/>
               <zeroOrMore>
                  <ref name="tei_model.global"/>
               </zeroOrMore>
            </optional>
            <choice>
<!-- Debemos elegir entre incluir un elemento <body> o un elemento <group> -->
<ref name="tei_body"/>
               <ref name="tei_group"/>
            </choice>
            <zeroOrMore>
               <ref name="tei_model.global"/>
            </zeroOrMore>
<optional>
<!-- Opcionalmente podemos tener un elemento <back> al interno de <text> -->
<ref name="tei_back"/>
               <zeroOrMore>
                  <ref name="tei_model.global"/>
              </zeroOrMore>
            </optional>
         </group>
<!-- Aquí la lista de los tipos de atributos que puede contener el elemento <text> -->
<ref name="tei_att.global.attributes"/>
         <ref name="tei_att.declaring.attributes"/>
         <ref name="tei_att.typed.attributes"/>
         <empty/>
      </element>
   </define>

Para llevar a cabo un proyecto de edición digital y de marcado XML-TEI es indispensable tener un esquema creado a nuestra medida. El esquema es el que nos permite establecer qué tipo de elementos necesitamos para marcar determinados fenómenos textuales, para poder localizarlos y procesarlos posteriormente. También supone que podamos establecer los atributos, los valores e incluso el orden de todos ellos.

Normalmente en un proyecto hay múltiples personas trabajando en la codificación, por lo que es muy importante que todos codifiquen de la misma manera y con los mismos procedimientos y elementos.

Para la creación de un esquema el proceso siempre es el mismo. Tal y como vimos en la Unidad 1, la condición indispensable es que analicemos el texto y que definamos qué elementos aparecen en el mismo, tanto cuestiones estructurales, como semánticas. Una vez hemos elaborado la lista de fenómenos que nos gustaría codificar, deberemos encontrar la manera de expresarlo según las Guías directrices y elaborar nuestro esquema Relax NG propio.

Aquí podréis ver el esquema Relax NG Lite que proponen la Guías directrices: http://www.tei-c.org/release/xml/tei/custom/schema/relaxng/tei_lite.rng. Lo podéis abrir con el programa oXygen e intentar entender la estructura (File > Open URL > Pegad la URL en “File URL” y pulsar “OK”).

Lecturas y tutoriales:

¿Como citar?

Susanna Allés-Torrent, Introducción a la codificación de textos en XML-TEI, 2018.
http://tthub.io/aprende/introduccion-a-tei/ (Última fecha de acceso)