4.4. El fichero origen

Para la generación de los mensajes XML, se ha utilizado a su vez otro mensaje XML contiendo la gramática a generar.

Nuestro fichero origen contendrá en un determinado punto del documento el axioma de la gramática a generar, en nuestro caso un mensaje del protocolo establecido por la matriz de audio y vídeo.

Para verlo mas claro, lo que sigue es una pequeña muestra del documento:

<?xml version="1.0"?>
<grammar>
<ref id="cabecera">
<p id=" ">:?xml version="1.0"?>:root></p>
</ref>
....
<ref id="msg_body">
<p id="Login">:messageBody><xref id="dev_src"/><xref id="Client"/><xref id="version"/>
< xref id="timeout"/><xref id="devReqLi"/>:/messageBody></p>
<p id="InputChannelOn">:messageBody><xref id="dev_src"/><xref id="Channel"/>:/messageBody></p>
<p id="InputChannelOff">:messageBody><xref id="dev_src"/><xref id="Channel"/>:/messageBody></p>
<p id="rGetMessages">:messageBody><xref id="dev_src"/>:/messageBody></p>
</ref>
...
<ref id="trama">
<p id=" "><xref id="cabecera"/><xref id="sesion"/><xref id="grupo"/><xref id="fin"/></p>
</ref>
</grammar>

Una vez leído en memoria, lo primero que hace el generador de mensajes XML es buscar entre las etiquetas aquella que no es llamada o referenciada por otra. Con esto consigue encontrar el axioma y una vez encontrado éste, tan sólo debemos ir siguiendo las referencias.

Las referencias están identificadas por un nombre, de esa manera serán fácilmente accesibles una vez esté el documento cargado en memoria. Puesto que en el protocolo el contenido de una etiqueta puede variar dependiendo del tipo de mensaje a generar, cada nodo hijo de la etiqueta referenciada contendrá un identificador con el que elegimos el tipo de mensaje que estamos generando.

Cada etiqueta como hemos dicho puede contener referencias a otras o texto, ese texto a su vez serán etiquetas para nuestro mensaje generado, pero ahora nos interesa que el analizador de nuestro mensaje las vea como simple texto, de ahí que el principio de la etiqueta (<) esté sustituido por los dos puntos ( : ). Al final de la construcción, los dos puntos serán sustituidos y obtendremos el mensaje buscado.