Para obtener las etiquetas empleadas en un determinado documento escrito en DocBook XML, se generó el programa analizador_tags. Este programa, escrito en flex[8], acepta como parámetros los documentos[9] de los cuales queremos obtener las etiquetas más usadas. Si no se le pasa ningún parámetro, toma los datos de la entrada estándar.
Este programa analiza los documentos pasados como parámetros de la siguiente forma:
Si es un comentario, lo ignora. Un comentario es todo aquello comprendido entre: "<!--" y "-->".
Si es la definición de documento XML, la ignora. Esta definición está comprendida entre: "<?xml" y "?>".
Si es una definición del tipo de documento, la ignora. Esta definición está delimitada por: "<!DOCTYPE" y ">"
Si se encuentra la declaración de una entidad, la ignora. Una entidad está comprendida entre: "<!ENTITY" y ">"
Ignoramos todos los caracteres comprendidos entre: "<![CDATA[" y ]]">".
Ignoramos las etiquetas de cierre: "</etiqueta>".
Ignoramos todo carácter comprendido entre: "<?" y "?>".
Si encuentra un carácter "<" (que no es un caso especial), quiere decir que estamos ante una nueva etiqueta. El nombre de una etiqueta está comprendido entre "<" y el primer espacio en blanco, tabulación o final de etiqueta "/" que se encuentre. Todo lo que venga después del nombre de una etiqueta se ignora, hasta encontrar el carácter de cierre de etiqueta: ">".
Ejemplos de etiquetas: <para>, <imagedata/>, <sect1 id="index">. En estos casos, las etiquetas obtenidas serían: "para", "imagedata" y "sect1".
Todo carácter que no se encuentre en cualquiera de estos caso, como pueden ser los finales de línea y el contenido del documento, no se tienen en cuenta.