230 likes | 355 Views
Metalenguajes descriptivos: Introducción a SGML Eduardo Peis Universidad de Granada. SGML (ISO 8879-1986) – Standard Generalized Markup Language. Punto de partida: la edición electrónica El procesamiento de textos WYSIWYG Lenguajes de etiquetado Procedimentales: Troff / TeX / LaTeX …
E N D
Metalenguajes descriptivos: Introducción a SGMLEduardo PeisUniversidad de Granada
SGML (ISO 8879-1986) – Standard Generalized Markup Language • Punto de partida: la edición electrónica • El procesamiento de textos • WYSIWYG • Lenguajes de etiquetado • Procedimentales: Troff / TeX / LaTeX… • Descriptivos: SCRIBE / GML • SGML • Etiquetado generalizado • Separa formato de estilo • Independiente de plataformas y sistemas • Etiquetado descriptivo • Tipos de documentos • Independencia de los datos
ELEMENTOS <Generic Identifier>............</Generic Identifier> <nombre>...........................</nombre> <GI>.............TEXTO (#PCDATA)..............</GI> <GI>...........OTROS ELEMENTOS............</GI> <GI><GI1>...TEXTO (#PCDATA)...</GI1></GI> <GI>.........................NADA.......................</GI> <mensaje> <autor>Eduardo Peis</autor> <texto>Este es un mensaje de inicio</texto> </mensaje>
MODELO DE DOCUMENTO (document instance) <antologia> <poema><titulo>La canción del pirata</titulo> <estrofa> <linea>Con diez cañones por banda</linea> <linea>viento en popa a toda vela</linea> <linea>no corta el mar sino vuela</linea> <linea>un velero bergantín</linea> </estrofa> <estrofa> <linea>Bajel pirata le llaman</linea> <linea>por su bravura el temido</linea> <linea>por todo el mar conocido</linea> <linea>del uno a otro confín</linea> </estrofa> </poema> <!-- más poemas aquí --> </antologia>
MINIMIZACIÓN <antologia> <poema><titulo>La canción del pirata <estrofa> <linea>Con diez cañones por banda <linea>viento en popa a toda vela, <linea>no corta el mar sino vuela <linea>un velero bergantín <estrofa> <linea>Bajel pirata le llaman <linea>por su bravura el temido <linea>en todo el mar conocido <linea>del uno al otro confín. <poema><titulo>La esfera rota <!-- más poemas aquí --> </antologia>
DOCUMENT TYPE DEFINITION (DTD) Aquí aparecería el denominado “prólogo” SGML <!DOCTYPE antologia [ <!ELEMENT antologia - - (poema+)> <!ELEMENT poema - O (titulo?, estrofa+)> <!ELEMENT titulo - O (#PCDATA) > <!ELEMENT estrofa - O (linea+) > <!ELEMENT linea - O (#PCDATA) > ]> Aquí vendría un documento etiquetado (document instance) según el anterior DTD
ACLARACIONES (DECLARATION) DE ELEMENTOS <!ELEMENT pareado O O (linea1, linea2)> <!ELEMENT (linea | linea1 | linea2) O O (#PCDATA) > <!ELEMENT poema - O (titulo?, (estrofa+ | pareado+ | linea+) ) > <!ELEMENT poema - O (titulo?, (estrofa | pareado | linea)+ ) >
USO DE PARÉNTESIS EN LOS MODELOS DE CONTENIDO <!ELEMENT estribillo - - (#PCDATA | linea+)> <!ELEMENT poema - O (titulo?,( (linea+) | (estribillo?, (estrofa, estribillo?)+ ) )) >
EXCEPCIONES (EXCLUSIÓN E INCLUSIÓN) AL MODELO DE CONTENIDO <!ELEMENT (nota | variante) - - (#PCDATA)> <!ELEMENT poema - O (titulo?, (estrofa+ | pareado+ | linea+) ) +(nota | variante) > <!ELEMENT titulo - O (#PCDATA) -(note | variant) > <!ELEMENT (note | variant) - - (#PCDATA) -(note | variant) >
ATRIBUTOS <poema id="P1" estado="borrador">... </poema> DECLARACIONES DE ATRIBUTOS <!ATTLIST poema id ID #IMPLIED estado (borrador | revisado | publicado) “borrador” > <!ATTLIST poema estado (borrador | revisado | publicado) #REQUIRED> <!ATTLIST poema id ID #IMPLIED estado (borrador | revisado | publicado) #CURRENT >
<!ATTLIST poema id ID #IMPLIED > ATRIBUTOS <POEMA id="La canción del pirata"> Texto del poema con identificador "La canción del pirata" </POEMA> <POEMA id="P40"> Texto del poema con identificador "P40" </POEMA> <POEMA> Este poema no tiene identificador </POEMA>
ATRIBUTO REFERENCIA <!ELEMENT refpoema - O EMPTY> <!ATTLIST refpoema target IDREF #REQUIRED > ... el poema de Espronceda La canción del pirata <refpoema target="La canción del pirata">...
ENTIDADES <!ENTITY lcp "La canción del pirata"> El poema &lcp; es mú gonico <!ENTITY Capítulo Dos SYSTEM "/mis doc~/sgml/cap2.txt"> <!ENTITY arroba “@"> <!ENTITY arroba "." > … No era posible que a.uásemos... <!DOCTYPE texto [ <!ENTITY % elemento-epr “<!ELEMENT epr (#PCDATA)>”> %elemento-epr; ]>
DECLARACION DE TIPO DE DOCUMENTO <!DOCTYPE mi2 SYSTEM "mi2.dtd" [ <!ENTITY atl "Acrónimos de Tres Letras"> <!ELEMENT mi.tag - - (#PCDATA)> <!-- cualquier otra aclaración o redefinición debe ir aquí --> ] ]> <mi.2> Este es un ejemplo de un tipo de documento mi.2 modificado que puede contener <mi.tag>mis etiquetas especiales</mi.tag> y referencias a mis entes normales como &atl; </mi.2>
<!DOCTYPE mi.dtd [ <!-- aquí van todas las aclaraciones de mi.dtd --> ... ]> <mi.dtd> Este es un ejemplo de un tipo de documento que responde a mi.dtd </mi.dtd> <!DOCTYPE mi SYSTEM "mi.dtd" > <mi.2> Este es un ejemplo (mi.2) de un tipo de documento que se corresponde con el DTD mi.dtd </mi.2>
<!DOCTYPE mi.2 system “mi.2.dtd” [ <!ENTITY cap1 SYSTEM "cap1.txt"> <!ENTITY cap2 SYSTEM "cap2.txt"> <!ENTITY cap3 "-- no escritas aún --"> ]> <mi.2> <miEncabezado> ... </miEncabezado> <texto> <preliminar> ... </preliminar> <cuerpo> &cap1; &cap2; &cap3; ... </cuerpo> </texto> </mi.2>
DECLARACIÓN SGML <!sgml “ISO 8879:1986” charset baseset “ISO 646-1983//charset International Reference Version (IRV)//ESC 2/5 4/0”...> <!doctype biblioteca system “c:/sgml/biblioteca.dtd”>
SGML: sintaxis básica (1) modelo de documento declaración SGML <!SGML “ISO 8879:1986” charset baseset “ISO 646-1983//charset International Reference Version (IRV)//ESC 2/5 4/0”> <!DOCTYPE biblioteca system “c:/sgml/biblioteca.dtd”> <biblioteca> <!-- comienzo del registro de un libro --> <libro> <titulo>Los corsarios vacilantes</titulo> <autor>Pompeyo Mañas <email>pomp.mcu.es</email> </autor> <editorial>Labor</editorial> <cubierta tipo=”blanda”></cubierta> <categoría clase=”noficción”></categoría> <isbn>84-045-87498-0</isbn> <nota número=”5”></nota> <comentarios>Libro reservado</comentarios> </libro> <!– más registros aquí --> </biblioteca> tipo de documento entidad de sistema contenido (#PCDATA) comentarios SGML elementos referencia de entidad atributos
declaración de tipo de documento <!DOCTYPE biblioteca [ <!ENTITY @ “.”> <!ELEMENT biblioteca - - (libro+)> <!ELEMENT libro – O (título, autor+, editorial, cubierta, categoría, isbn, nota, comentarios?)> <!ELEMENT título – O (#PCDATA)> <!ELEMENT autor – O (#PCDATA, email)> <!ELEMENT email – O (#PCDATA)> <!ELEMENT editorial – O (#PCDATA)> <!ELEMENT cubierta – O EMPTY> <!ATTLIST cubierta tipo (blanda | dura) “blanda”> <!ELEMENT categoría – O EMPTY> <!ATTLIST categoría clase (ficción | fantasía | cficción | misterio | terror | noficción | histórico | biografía) “ficción” > <!ELEMENT isbn – O (#PCDATA)> <!ELEMENT nota – O EMPTY> <!ATTLIST nota número (1 | 2 | 3 | 4 | 5) #REQUIRED> <!ELEMENT comentarios – O (#PCDATA)> ]> declaración de entidad declaraciones de elementos declaraciones de listas de atributos SGML: sintaxis básica (2) DTD –Document Type Definition-
clave SGML reglas de minimización modelo de contenido <!ELEMENT libro – O (título, autor+, editorial, cubierta, categoría, isbn, nota, comentarios?)> identificador genérico claves SGML para modelos de contenido EMPTY elemento vacío #PCDATA cualquier cadena de caracteres conectores conectores indicadores de aparición minimización - obligatoria etiqueta , ambos y en ese orden + necesario y repetible (1 o más veces) | o uno o el otro ? opcional (0 o 1 vez) o opcional & en cualquier orden * Opcional y repetible (0 o más veces) 1ª posición etiqueta inicio 2ª posición etiqueta fin SGML: sintaxis básica (2.1) declaración de elementos Indicadores de aparición
valor de atributo #REQUIRED obligatorio ID identificador único #IMPLIED opcional IDREF puntero a algún otro elemento #CURRENT último especificado CDATA datos de caracteres no analizables default especificado NMTOKEN cualquier cadena de caracteres NUMBER caracteres numéricos SGML: sintaxis básica (2.2) declaraciones de lista de atributos nombre de atributo <nombre nacionalidad=“SP” sexo=“V”>Eduardo Peis</nombre> elemento al que cualifican posibles valores AttrType valor por defecto Default nombre de atributo AttrName <!ATTLIST nombre nacionalidad (AU | AS | BG |…| SP | NZ) “SP” sexo (V | H) #REQUIRED>
<!DOCTYPE texto [ <!ENTITY lfp “liga de fútbol profesional”> ]> <texto>el hecho fue estudiado por la &lfp; en previsión de posibles sanciones</texto> entidad general interna no analizada <!ENTITY logo SYSTEM “http://www.ugr.es/~epeis/logo.gif”> general externa analizada <!ENTITY @ “.”> de carácter <!ENTITY miscosas SYSTEM “http://www.ugr.es/~epeis/miscosas.sgm”> entidades predefinidas & & < < > > ' ‘ " “ SGML: sintaxis básica (2.3) declaraciones de entidades <!DOCTYPE texto [ <!ENTITY % elemento-epr “<!ELEMENT epr (#PCDATA)>”> %elemento-epr; ]> de parámetro
SGML: software • Parsers analizadores • Editores / procesadores • Formateadores • Conversores • Gestión de datos Es tal la potencialidad de SGML que no es posible su explotación con el software de red disponible en la actualidad