Logo Studenta

Apuntes de XML y DTD

Esta es una vista previa del archivo. Inicie sesión para ver el archivo original

DTD Definici?n de Tipo de Documento. XML. Bartolom? Sintes Marco.htm
 DTD: Definición de Tipo de Documento
		Qué es una DTD
		Referencia a una DTD en un documento XML
		Declaraciones 
 		Declaración de entidades
		Declaración de notaciones
		Declaración de elementos
		Declaración de atributos
 
Qué es una DTD
Una DTD es un documento que define la estructura de un documento XML: los
elementos, atributos, entidades, notaciones, etc, que pueden aparecer, el orden
y el número de veces que pueden aparecer, cuáles pueden ser hijos de cuáles,
etc. El procesador XML utiliza la DTD para verificar si un documento es válido,
es decir, si el documento cumple las reglas del DTD.
Volver al principio de la página
Referencia a una DTD en un documento XML
La DTD que debe utilizar el procesador XML para validar el documento XML se
indica mediante la etiqueta DOCTYPE. La DTD puede estar incluida en el propio
documento, ser un documento externo o combinarse ambas. 
		La DTD puede incluirse en el propio documento, con la siguiente sintaxis: 
 
 <!DOCTYPE nombre [
 ... declaraciones ...
]>
 
 
		La DTD puede estar en un documento externo y, si sólo va a ser utilizada
 por una única aplicación, la sintaxis es la siguiente: 
 
 <!DOCTYPE nombre SYSTEM "uri">
 
 Se puede combinar una DTD externa con una DTD interna, con la siguiente
 sintaxis:
 
 <!DOCTYPE nombre SYSTEM "uri" [
 ... declaraciones ...
]>
 
 
		La DTD puede estar en un documento externo y, si va a ser utilizada por
 varias aplicaciones, la sintaxis es la siguiente: 
 
 <!DOCTYPE nombre PUBLIC "fpi" "uri">
 
 Se puede combinar una DTD externa con una DTD interna, con la siguiente
 sintaxis:
 
 <!DOCTYPE nombre PUBLIC "fpi" "uri" [
 ... declaraciones ...
]>
 
 
En todos estos casos:
		"nombre" es el nombre del tipo de documento XML, que debe coincidir con
 el nombre del elemento raíz del documento XML.
		"uri" es el camino (absoluto o relativo) hasta la DTD.
		"fpi" es un indentificador público formal (Formal Public Identifier).
Volver al principio de la página
Declaraciones
Las DTDs describen la estructura de los documentos XML mediante
declaraciones. Hay cuatro tipos de declaraciones:
		Declaraciones de entidades
		Declaraciones de notaciones
		Declaraciones de elementos, que indican los elementos
 permitidos en un documento y su contenido (que puede ser simplemente texto
 u otros elementos).
		Declaraciones de atributos, que indican los
 atributos permitidos en cada elemento y el tipo o valores permitidos de
 cada elemento.
Declaración de entidades
Una entidad consiste en un nombre y su valor (son similares a las constantes
en los lenguajes de programación). Con algunas excepciones, el procesador XML
sustituye las referencias a entidades por sus valores antes de procesar el
documento. Una vez definida la entidad, se puede utilizar en el documento
escribiendo una referencia a la entidad, que empieza con el caracter "&",
sigue con el nombre de la entidad y termina con ";". (es decir,
&nombreEntidad;)
Las entidades pueden ser internas o externas y tanto unas como otras pueden
ser generales o paramétricas.
Las declaraciones de entidades internas (generales) siguen la siguiente
sintaxis:
<!ENTITY nombreEntidad "valorEntidad">
En las declaraciones de entidades externas (generales) se distinguen dos
casos:
		La entidad hace referencia a un fichero de texto y en ese caso la entidad
 se sustituye por el contenido del archivo. 
 La entidad puede ser una entidad de sistema, con la siguiente
 sintaxis:
 
 <!ENTITY nombreEntidad SYSTEM "uri">
 
 o puede ser una entidad pública, con la siguiente sintaxis:
 
 <!ENTITY nombreEntidad PUBLIC "fpi" "uri">
 
 
		La entidad hace referencia a un fichero que no es de texto (por ejemplo,
 una imagen) y en ese caso la entidad no se sustituye por el contenido del
 archivo. 
 La entidad puede ser una entidad de sistema, con la siguiente
 sintaxis:
 
 <!ENTITY nombreEntidad SYSTEM "uri" NDATA tipo>
 
 o puede ser una entidad pública, con la siguiente sintaxis:
 
 <!ENTITY nombreEntidad PUBLIC "fpi" "uri" NDATA tipo>
 
 
En todos estos casos:
		"nombreEntidad" es el nombre de la entidad.
		"valorEntidad" es el valor de la entidad.
		"uri" es el camino (absoluto o relativo) hasta un archivo.
		"tipo" es el tipo de archivo (gif, jpg, etc).
		"fpi" es un indentificador público formal (Formal Public Identifier).
Las declaraciones de entidades paramétricas siguen la mismas sintaxis que
las generales, pero llevan el caracter "%" antes del nombre de la entidad. Por
ejemplo:
<!ENTITY % nombreEntidad "valorEntidad">
<!ENTITY % nombreEntidad SYSTEM "uri">
<!ENTITY % nombreEntidad SYSTEM "uri" NDATA tipo>
La diferencia entre entidades generales y paramétricas es que las entidades
paramétricas se sustituyen por su valor en todo el documento (incluso en la
propia declaración de tipo de documento) mientras que las generales no se
sustituyen en la declaración de tipo de documento.
Volver al principio de la página
Declaración de notaciones
Las notaciones se usan en XML para definir las entidades externas que no va
a analizar el procesador XML (aunque sí lo hará la aplicación que trate un
documento). Para hacer referencia estas entidades no se utiliza la notación
habitual (&nombreEntidad;), sino que se utiliza el nombre de la entidad
directamente.
Volver al principio de la página
Declaración de elementos
Las declaraciones de los elementos siguen la siguiente sintaxis:
<!ELEMENT nombreElemento (contenido)>
en la que "nombreElemento" es el nombre del elemento, y "(contenido)" una
expresión que describe el contenido del elemento.
Para definir el contenido del elemento se pueden utilizar los términos
EMPTY, (#PCDATA) o ANY o escribir expresiones más complejas:
		EMPTY: significa que el elemento es vacío, es decir, que
 no puede tener contenido. Los elementos vacíos pueden escribirse con
 etiquetas de apertura y cierre sin nada entre ellos, ni siquiera espacios,
 o con una etiqueta vacía. Por ejemplo:
 				<!DOCTYPE ejemplo [ 
 <!ELEMENT ejemplo EMPTY>
]>
 
		
 		<ejemplo></ejemplo>
 
		
 		<ejemplo />
 
		
 		<ejemplo>Esto es un ejemplo</ejemplo> <!-- ERROR: contiene texto -->
 
		
 		<ejemplo><a></a></ejemplo> <!-- ERROR: contiene un elemento <a> -->
 
 
		(#PCDATA): significa que el elemento puede contener
 texto (debe escribirse entre paréntesis). Por ejemplo: 
 				<!DOCTYPE ejemplo [ 
 <!ELEMENT ejemplo (#PCDATA)>
]>
 
		
 		<ejemplo />
 
		
 		<ejemplo>Esto es un ejemplo</ejemplo>
 
		
 		<ejemplo><a></a></ejemplo> <!-- ERROR: contiene un elemento <a> -->
 
 
		ANY: significa que el elemento puede contener cualquier
 cosa (texto y otros elementos). Por ejemplo: 
 				<!DOCTYPE ejemplo [ 
 <!ELEMENT ejemplo ANY>
 <!ELEMENT a ANY>
]>
 
		
 		<ejemplo />
 
		
 		<ejemplo>Esto es un ejemplo</ejemplo>
 
		
 		<ejemplo><a>Esto es un ejemplo</a></ejemplo>
 
 
Para indicar que un elemento puede o debe contener otros elementos se deben
indicar los elementos, utilizando los conectores y modificadores siguientes:
		, (coma): significa que el elemento contiene los
 elementos en el orden indicado. Por ejemplo: 
 				<!DOCTYPE ejemplo [ 
 <!ELEMENT ejemplo (a, b)>
 <!ELEMENT a EMPTY>
 <!ELEMENT b EMPTY>
]>
 
		
 		<ejemplo><a /><b /></ejemplo>
<ejemplo><a /><b /><c /></ejemplo> <!-- ERROR: contiene un elemento <c /> -->
 
		
 		<ejemplo><a /></ejemplo> <!-- ERROR: falta el elemento <b /> -->
 
		
 		<ejemplo><b /><a /></ejemplo> <!-- ERROR: el orden no es correcto -->
 
 
		| (o lógico): significa que el elemento contiene uno de
 los dos elementos. Por ejemplo: 
 				<!DOCTYPE ejemplo [ 
 <!ELEMENT ejemplo (a | b)>
 <!ELEMENT a EMPTY>
 <!ELEMENT b EMPTY>
]>
 
		
 		<ejemplo><a /></ejemplo>
 
		
 		<ejemplo><b /></ejemplo>
 
		
 		<ejemplo><a /><b /></ejemplo> <!-- ERROR: están los dos elementos -->
 
		
 		<ejemplo></ejemplo> <!-- ERROR: no hay ningún elemento -->
 
 
		?: significa que el elemento puede aparecer o no, pero
 sólo una vez. Por ejemplo: 
 				<!DOCTYPE ejemplo [ 
 <!ELEMENT ejemplo (a, b?)>
 <!ELEMENT a EMPTY>
 <!ELEMENT b EMPTY>
]>
 
		
 		<ejemplo><a /></ejemplo>
 
		
 		<ejemplo><a /><b /></ejemplo>
 
		
 		<ejemplo><b /></ejemplo> <!-- ERROR: falta el elemento <a /> -->
 
		
 		<ejemplo><b /><b /></ejemplo> <!-- ERROR: el elemento <b /> aparece dos veces -->
 
 
		*: significa que el elemento puede no aparecer o
 aparecer una o más veces. Por ejemplo: 
 				<!DOCTYPE ejemplo [ 
 <!ELEMENT ejemplo (a*, b)>
 <!ELEMENT a EMPTY>
 <!ELEMENT b EMPTY>
]>
 
		
 		<ejemplo><b /></ejemplo>
 
		
 		<ejemplo><a /><b /></ejemplo>
 
		
 		<ejemplo><a /><a /><b /></ejemplo>
 
		
 		<ejemplo><b /><a /></ejemplo> <!-- ERROR: el elemento <a /> aparece después de <b /> -->
 
 
		+: significa que el elemento tiene que aparecer una o
 más veces (no puede no aparecer). Por ejemplo: 
 				<!DOCTYPE ejemplo [ 
 <!ELEMENT ejemplo (a+, b)>
 <!ELEMENT a EMPTY>
 <!ELEMENT b EMPTY>
]>
 
		
 		<ejemplo><a /><b /></ejemplo>
 
		
 		<ejemplo><a /><a /><b /></ejemplo>
 
		
 		<ejemplo><b /></ejemplo> <!-- ERROR: falta el elemento <a /> -->
 
 
		(): permite agrupar expresiones. Por ejemplo: 
 				<!DOCTYPE ejemplo [ 
 <!ELEMENT ejemplo (a, (a|b))>
 <!ELEMENT a EMPTY>
 <!ELEMENT b EMPTY>
]>
 
		
 		<ejemplo><a /><a /></ejemplo>
 
		
 		<ejemplo><a /><b /></ejemplo>
 
		
 		<ejemplo><a /></ejemplo> <!-- ERROR: falta el elemento <a /> o <b /> -->
 
 				<!DOCTYPE ejemplo [ 
 <!ELEMENT ejemplo ((a, b)|(b, a))>
 <!ELEMENT a EMPTY>
 <!ELEMENT b EMPTY>
]>
 
		
 		<ejemplo><a /><b /></ejemplo>
 
		
 		<ejemplo><b /><a /></ejemplo>
 
		
 		<ejemplo><a /><a /></ejemplo> <!-- ERROR: sólo admite <a /><b /> o <b /><a /> -->
 
 
Volver al principio de la página
Declaración de atributos
Una declaración de atributos sigue la siguiente sintaxis:
<!ATTLIST nombreElemento nombreAtributo tipoAtributo valorInicialAtributo >
en la que:
		"nombreElemento" es el nombre del elemento para el que se define un
 atributo.
		"nombreAtributo" es el nombre del atributo.
		"tipoAtributo" es el tipo de datos .
		"valorInicialAtributo" es el valor predeterminado del atributo (aunque
 también puede indicar otras cosas).
Para definir varios atributos de un mismo elemento, se puede utilizar una o
varias declaraciones de atributos. Los siguientes ejemplos son equivalentes:
<!ATTLIST nombreElemento nombreAtributo1 tipoAtributo1 valorInicialAtributo1>
<!ATTLIST nombreElemento nombreAtributo2 tipoAtributo2 valorInicialAtributo2>
<!ATTLIST nombreElemento
 nombreAtributo1 tipoAtributo1 valorInicialAtributo1
 nombreAtributo2 tipoAtributo2 valorInicialAtributo2
 >
Los tipos de atributos son los siguientes:
		CDATA: el atributo contiene caracteres (sin
 restricciones). Por ejemplo:
 				<!DOCTYPE ejemplo [ 
 <!ELEMENT ejemplo EMPTY>
 <!ATTLIST ejemplo color CDATA #REQUIRED>
]>
 
		
 		<ejemplo></ejemplo> <!-- ERROR: falta el atributo "color", obligatorio debido al #REQUIRED -->
 
		
 		<ejemplo color=""></ejemplo>
 
		
 		<ejemplo color="amarillo"></ejemplo> 
 
		
 		<ejemplo color="azul marino #000080"></ejemplo> 
 
 
		NMTOKEN: el atributo sólo contiene letras, dígitos, y
 los caracteres punto ".", guión "-", subrayado "_" y dos puntos ":". Por
 ejemplo:
 				<!DOCTYPE ejemplo [ 
 <!ELEMENT ejemplo EMPTY>
 <!ATTLIST ejemplo color NMTOKEN #REQUIRED>
]>
 
		
 		<ejemplo color=""></ejemplo>
 
		
 		<ejemplo color="azul-marino"></ejemplo> 
 
		
 		<ejemplo color="1"></ejemplo> 
 
		
 		<ejemplo color="azul marino"></ejemplo> <!-- ERROR: hay un espacio en blanco -->
 
		
 		<ejemplo color="#F0F0F0"></ejemplo> <!-- ERROR: contiene el carácter # -->
 
 
		NMTOKENS: el atributo sólo contiene letras, dígitos, y
 los caracteres punto ".", guión "-", subrayado "_", dos puntos ":" (como el
 tipo NMTOKEN) y también espacios en blanco. Por ejemplo:
 				<!DOCTYPE ejemplo [ 
 <!ELEMENT ejemplo EMPTY>
 <!ATTLIST ejemplo color NMTOKENS #REQUIRED>
]>
 
		
 		<ejemplo color=""></ejemplo>
 
		
 		<ejemplo color="1"></ejemplo> 
 
		
 		<ejemplo color="azul marino"></ejemplo> 
 
		
 		<ejemplo color="2*2"></ejemplo> <!-- ERROR: hay un asterisco -->
 
 
		valores: el atributo sólo puede contener uno de los
 términos de una lista. La lista se escribe entre paréntesis, con los
 términos separados por una barra vertical "|". Por ejemplo: 
 				<!DOCTYPE ejemplo [ 
 <!ELEMENT ejemplo EMPTY>
 <!ATTLIST ejemplo color (azul|blanco|rojo) #REQUIRED>
]>
 
		
 		<ejemplo color=""></ejemplo>
 
		
 		<ejemplo color="azul"></ejemplo> 
 
		
 		<ejemplo color="verde"></ejemplo> <!-- ERROR: "verde" no está en la lista de valores -->
 
 
		ID: el valor del atributo (no el nombre) debe ser único
 y no se puede repetir en otros elementos o atributos. Por ejemplo:
 				<!DOCTYPE ejemplo [ 
 <!ELEMENT ejemplo (libro*)>
 <!ELEMENT libro (#PCDATA) >
 <!ATTLIST libro codigo ID #REQUIRED>
]>
 
		
 		<ejemplo>
 <libro codigo="L1">Poema de Gilgamesh</libro>
 <libro codigo="L2">Los preceptos de Ptah-Hotep</libro>
</ejemplo>
 
		
 		<ejemplo> 
 <libro codigo="1">Poema de Gilgamesh</libro> <!-- ERROR: el valor de un atributo de tipo ID no puede empezar con un número -->
 <libro codigo="L2">Los preceptos de Ptah-Hotep</libro> 
</ejemplo>
 
		
 		<ejemplo>
 <libro codigo="L1">Poema de Gilgamesh</libro> 
 <libro codigo="L1">Los preceptos de Ptah-Hotep</libro> <!-- ERROR: el valor "L1" ya se ha utilizado -->
</ejemplo>
 
 
		IDREF: el valor del atributo debe coincidir con el valor
 del atributo ID de otro elemento. Por ejemplo: 
 				<!DOCTYPE ejemplo [ 
 <!ELEMENT
ejemplo ((libro|prestamo)*)>
 <!ELEMENT libro (#PCDATA) >
 <!ATTLIST libro codigo ID #REQUIRED>
 <!ELEMENT prestamo (#PCDATA) >
 <!ATTLIST prestamo libro IDREF #REQUIRED>
]>
 
		
 		<ejemplo>
 <libro codigo="L1">Poema de Gilgamesh</libro>
 <prestamo libro="L1">Numa Nigerio</prestamo>
</ejemplo>
 
		
 		<ejemplo>
 <libro codigo="L1">Poema de Gilgamesh</libro>
 <prestamo libro="L2">Numa Nigerio</prestamo> <!-- ERROR: el valor "L2" no es ID de ningún elemento -->
</ejemplo>
 
 
		IDREFS: el valor del atributo es una serie de valores
 separados por espacios que coinciden con el valor del atributo ID de otros
 elementos. 
 				<!DOCTYPE ejemplo [ 
 <!ELEMENT ejemplo ((libro|prestamo)*)>
 <!ELEMENT libro (#PCDATA) >
 <!ATTLIST libro codigo ID #REQUIRED>
 <!ELEMENT prestamo (#PCDATA) >
 <!ATTLIST prestamo libro IDREFS #REQUIRED>
]>
 
		
 		<ejemplo>
 <libro codigo="L1">Poema de Gilgamesh</libro>
 <libro codigo="L2">Los preceptos de Ptah-Hotep</libro>
 <prestamo libro="L1 L2">Numa Nigerio</prestamo>
</ejemplo>
 
		
 		<ejemplo>
 <libro codigo="L1">Poema de Gilgamesh</libro>
 <libro codigo="L2">Los preceptos de Ptah-Hotep</libro>
 <prestamo libro="L1">Numa Nigerio</prestamo>
</ejemplo>
 
		
 		<ejemplo>
 <libro codigo="L1">Poema de Gilgamesh</libro>
 <libro codigo="L2">Los preceptos de Ptah-Hotep</libro>
 <prestamo libro="L3">Numa Nigerio</prestamo> <!-- ERROR: el valor "L3" no es ID de ningún elemento -->
</ejemplo>
 
 
		ENTITY: el valor del atributo es alguna entidad definida
 en la DTD.
		ENTITIES: el valor del atributo es alguna de las
 entidades de una lista de entidades definida en la DTD.
		NOTATION: el valor del atributo es alguna notación
 definida en la DTD.
Los valores iniciales de los atributos son los siguientes:
		#REQUIRED: el atributo es obligatorio, aunque no se
 especifica ningún valor predeterminado. Por ejemplo:
 				<!DOCTYPE ejemplo [ 
 <!ELEMENT ejemplo EMPTY>
 <!ATTLIST ejemplo color CDATA #REQUIRED>
]>
 
		
 		<ejemplo></ejemplo> <!-- ERROR: falta el atributo "color" -->
 
		
 		<ejemplo color=""></ejemplo>
 
		
 		<ejemplo color="amarillo"></ejemplo> 
 
		
 		<ejemplo color="azul marino #000080"></ejemplo> 
 
 
		#IMPLIED: el atributo no es obligatorio y no se
 especifica ningún valor predeterminado. Por ejemplo:
 				<!DOCTYPE ejemplo [ 
 <!ELEMENT ejemplo EMPTY>
 <!ATTLIST ejemplo color CDATA #IMPLIED>
]>
 
		
 		<ejemplo></ejemplo> 
 
		
 		<ejemplo color=""></ejemplo>
 
		
 		<ejemplo color="amarillo"></ejemplo> 
 
		
 		<ejemplo color="azul marino #000080"></ejemplo> 
 
 
		#FIXED valor: el atributo tiene un valor fijo. Por
 ejemplo:
 				<!DOCTYPE ejemplo [ 
 <!ELEMENT ejemplo EMPTY>
 <!ATTLIST ejemplo color CDATA #FIXED "verde">
]>
 
		
 		<ejemplo></ejemplo> 
 
		
 		<ejemplo color=""></ejemplo> <!-- ERROR: el atributo "color" no tiene el valor "verde" -->
 
		
 		<ejemplo color="amarillo"></ejemplo> <!-- ERROR: el atributo "color" no tiene el valor "verde" -->
 
		
 		<ejemplo color="verde"></ejemplo> 
 
 
		valor: el atributo tiene un valor predeterminado. Por
 ejemplo:
 				<!DOCTYPE ejemplo [ 
 <!ELEMENT ejemplo EMPTY>
 <!ATTLIST ejemplo color CDATA "verde">
]>
 
		
 		<ejemplo></ejemplo> 
 
		
 		<ejemplo color=""></ejemplo> 
 
		
 		<ejemplo color="amarillo"></ejemplo> 
 
		
 		<ejemplo color="verde"></ejemplo> 
 
 
Volver al principio de la página
 Esta página forma parte del curso "XML: Lenguaje de Marcas Extensible"
 disponible en http://www.mclibre.org
 Autor: Bartolomé Sintes Marco
 Última modificación: 8 de abril de 2014 
 
Esta obra está bajo una licencia de Creative
Commons.
DTD Definici?n de Tipo de Documento. XML. Bartolom? Sintes Marco_files/88x31.png
DTD Definici?n de Tipo de Documento. XML. Bartolom? Sintes Marco_files/highlight.css
/* HIGHLIGHT.JS
 Bartolomé Sintes Marco
 http://www.mclibre.org
 
 Hoja de estilo para highlight.js
 1 de abril de 2014
*/
/* Estilo para XML imitando a XML Copy Editor */
code.hljs.xml { font-weight: bold; font-size: 110%; }
pre code.hljs.xml .hljs-doctype { color: #0000FF; } /* doctype */
pre code.hljs.xml .hljs-tag { color: #0000FF; } /* tag */
pre code.hljs.xml .hljs-attribute { color: #FF0000; } /* attribute */
pre code.hljs.xml .hljs-value { color: #000000; } /* value */
pre code.hljs.xml .hljs-comment { color: #808080; } /* comment */
pre code.hljs.xml .hljs-pi { color: #0000FF; } /* pi */
pre code.hljs.xml .hljs-cdata { color: #FF0000; } /* cdata */
/* Estilo para PHP imitando a Zend Eclipse PDT */
code.hljs.php { font-weight: bold; font-size: 110%; }
pre code.hljs.php .hljs-comment { color: rgb( 85,127, 95) } /* comment */
pre code.hljs.php .hljs-keyword { color: rgb(127, 0, 85) } /* keyword */
pre code.hljs.php .hljs-number { } /* number */
pre code.hljs.php .hljs-phpdoc { } /* phpdoc params in comments */
pre code.hljs.php .hljs-preprocessor { color: rgb(255, 0, 0) } /* preprocessor marks: "<?php" and "?>" */
pre code.hljs.php .hljs-string { color: rgb( 0, 0,192) } /* string (of any type) */
pre code.hljs.php .hljs-variable { } /* variable starting with "$" */
/* Estilo para HTML imitando a Zend Eclipse PDT */
code.hljs.html { font-weight: bold; font-size: 110%; }
pre code.hljs.html .hljs-tag { color: rgb( 63,127,127) } /* any tag from "<" till ">" */
pre code.hljs.html .hljs-attribute { color: rgb(127, 0,127) } /* tag's attribute with or without value */
pre code.hljs.html .hljs-value { color: rgb( 42, 0,255) } /* attribute's value */
pre code.hljs.html .hljs-comment { color: rgb( 63, 95,191) } /* comment */
pre code.hljs.html .hljs-pi { color: rgb( 0,128,128) } /* processing instruction (<? ... ?>) */
pre code.hljs.html .hljs-doctype { color: rgb( 0,128,128) } /* <!DOCTYPE ... > declaration */
pre code.hljs.html .hljs-cdata { color: rgb( 0,128,128) } /* CDATA section */
/* Estilo para CSS imitando a Zend Eclipse PDT */
code.hljs.css { font-weight: bold; font-size: 110%; }
pre code.hljs.css .hljs-tag { color: rgb( 63,127,127) } /* tag in selectors */
pre code.hljs.css .hljs-id { color: rgb( 63,127,127) } /* #some_name in selectors */
pre code.hljs.css .hljs-class { color: rgb( 63,127,127) } /* .some_name in selectors */
pre code.hljs.css .hljs-at_rule { color: rgb( 63,127,127) } /* @-rule till first "{" or ";" */
pre code.hljs.css .hljs-attr_selector { color: rgb( 63,127,127) } /* attribute selector ([]) */
pre code.hljs.css .hljs-pseudo { color: rgb( 63,127,127) } /* pseudo classes/elements */
pre code.hljs.css .hljs-comment { color: rgb( 63, 95,191) } /* comment */
pre code.hljs.css .hljs-rules { color: rgb( 63,127,127) } /* everything from "{" till "}"
*/
pre code.hljs.css .hljs-attribute { color: rgb(127, 0,127) } /* property name inside a rule */
pre code.hljs.css .hljs-value { color: rgb( 42, 0,255) } /* property value inside a rule */
pre code.hljs.css .hljs-number { color: rgb( 42, 0,255) } /* number within a value */
pre code.hljs.css .hljs-string { color: rgb( 42, 0,255) } /* string within a value */
pre code.hljs.css .hljs-hexcolor { color: rgb( 42, 0,255) } /* hex color (#FFFFFF) within a value */
pre code.hljs.css .hljs-function { color: rgb( 42, 0,255) } /* CSS function within a value */
pre code.hljs.css .hljs-important { color: rgb( 63,127,127) } /* "!important" symbol */
 
DTD Definici?n de Tipo de Documento. XML. Bartolom? Sintes Marco_files/highlight.js
var hljs=new function(){function k(v){return v.replace(/&/gm,"&amp;").replace(/</gm,"&lt;").replace(/>/gm,"&gt;")}function t(v){return v.nodeName.toLowerCase()}function i(w,x){var v=w&&w.exec(x);return v&&v.index==0}function d(v){return Array.prototype.map.call(v.childNodes,function(w){if(w.nodeType==3){return b.useBR?w.nodeValue.replace(/\n/g,""):w.nodeValue}if(t(w)=="br"){return"\n"}return d(w)}).join("")}function r(w){var v=(w.className+" "+(w.parentNode?w.parentNode.className:"")).split(/\s+/);v=v.map(function(x){return x.replace(/^language-/,"")});return v.filter(function(x){return j(x)||x=="no-highlight"})[0]}function o(x,y){var v={};for(var w in x){v[w]=x[w]}if(y){for(var w in y){v[w]=y[w]}}return v}function u(x){var v=[];(function w(y,z){for(var A=y.firstChild;A;A=A.nextSibling){if(A.nodeType==3){z+=A.nodeValue.length}else{if(t(A)=="br"){z+=1}else{if(A.nodeType==1){v.push({event:"start",offset:z,node:A});z=w(A,z);v.push({event:"stop",offset:z,node:A})}}}}return z})(x,0);return v}function q(w,y,C){var x=0;var F="";var z=[];function B(){if(!w.length||!y.length){return w.length?w:y}if(w[0].offset!=y[0].offset){return(w[0].offset<y[0].offset)?w:y}return y[0].event=="start"?w:y}function A(H){function G(I){return" "+I.nodeName+'="'+k(I.value)+'"'}F+="<"+t(H)+Array.prototype.map.call(H.attributes,G).join("")+">"}function E(G){F+="</"+t(G)+">"}function v(G){(G.event=="start"?A:E)(G.node)}while(w.length||y.length){var D=B();F+=k(C.substr(x,D[0].offset-x));x=D[0].offset;if(D==w){z.reverse().forEach(E);do{v(D.splice(0,1)[0]);D=B()}while(D==w&&D.length&&D[0].offset==x);z.reverse().forEach(A)}else{if(D[0].event=="start"){z.push(D[0].node)}else{z.pop()}v(D.splice(0,1)[0])}}return F+k(C.substr(x))}function m(y){function v(z){return(z&&z.source)||z}function w(A,z){return RegExp(v(A),"m"+(y.cI?"i":"")+(z?"g":""))}function x(D,C){if(D.compiled){return}D.compiled=true;D.k=D.k||D.bK;if(D.k){var z={};function E(G,F){if(y.cI){F=F.toLowerCase()}F.split(" ").forEach(function(H){var I=H.split("|");z[I[0]]=[G,I[1]?Number(I[1]):1]})}if(typeof D.k=="string"){E("keyword",D.k)}else{Object.keys(D.k).forEach(function(F){E(F,D.k[F])})}D.k=z}D.lR=w(D.l||/\b[A-Za-z0-9_]+\b/,true);if(C){if(D.bK){D.b=D.bK.split(" ").join("|")}if(!D.b){D.b=/\B|\b/}D.bR=w(D.b);if(!D.e&&!D.eW){D.e=/\B|\b/}if(D.e){D.eR=w(D.e)}D.tE=v(D.e)||"";if(D.eW&&C.tE){D.tE+=(D.e?"|":"")+C.tE}}if(D.i){D.iR=w(D.i)}if(D.r===undefined){D.r=1}if(!D.c){D.c=[]}var B=[];D.c.forEach(function(F){if(F.v){F.v.forEach(function(G){B.push(o(F,G))})}else{B.push(F=="self"?D:F)}});D.c=B;D.c.forEach(function(F){x(F,D)});if(D.starts){x(D.starts,C)}var A=D.c.map(function(F){return F.bK?"\\.?\\b("+F.b+")\\b\\.?":F.b}).concat([D.tE]).concat([D.i]).map(v).filter(Boolean);D.t=A.length?w(A.join("|"),true):{exec:function(F){return null}};D.continuation={}}x(y)}function c(S,L,J,R){function v(U,V){for(var T=0;T<V.c.length;T++){if(i(V.c[T].bR,U)){return V.c[T]}}}function z(U,T){if(i(U.eR,T)){return U}if(U.eW){return z(U.parent,T)}}function A(T,U){return !J&&i(U.iR,T)}function E(V,T){var U=M.cI?T[0].toLowerCase():T[0];return V.k.hasOwnProperty(U)&&V.k[U]}function w(Z,X,W,V){var T=V?"":b.classPrefix,U='<span class="'+T,Y=W?"":"</span>";U+=Z+'">';return U+X+Y}function N(){var U=k(C);if(!I.k){return U}var T="";var X=0;I.lR.lastIndex=0;var V=I.lR.exec(U);while(V){T+=U.substr(X,V.index-X);var W=E(I,V);if(W){H+=W[1];T+=w(W[0],V[0])}else{T+=V[0]}X=I.lR.lastIndex;V=I.lR.exec(U)}return T+U.substr(X)}function F(){if(I.sL&&!f[I.sL]){return k(C)}var T=I.sL?c(I.sL,C,true,I.continuation.top):g(C);if(I.r>0){H+=T.r}if(I.subLanguageMode=="continuous"){I.continuation.top=T.top}return w(T.language,T.value,false,true)}function Q(){return I.sL!==undefined?F():N()}function P(V,U){var T=V.cN?w(V.cN,"",true):"";if(V.rB){D+=T;C=""}else{if(V.eB){D+=k(U)+T;C=""}else{D+=T;C=U}}I=Object.create(V,{parent:{value:I}})}function G(T,X){C+=T;if(X===undefined){D+=Q();return 0}var V=v(X,I);if(V){D+=Q();P(V,X);return V.rB?0:X.length}var W=z(I,X);if(W){var U=I;if(!(U.rE||U.eE)){C+=X}D+=Q();do{if(I.cN){D+="</span>"}H+=I.r;I=I.parent}while(I!=W.parent);if(U.eE){D+=k(X)}C="";if(W.starts){P(W.starts,"")}return U.rE?0:X.length}if(A(X,I)){throw new Error('Illegal lexeme "'+X+'" for mode "'+(I.cN||"<unnamed>")+'"')}C+=X;return X.length||1}var M=j(S);if(!M){throw new Error('Unknown language: "'+S+'"')}m(M);var I=R||M;var D="";for(var K=I;K!=M;K=K.parent){if(K.cN){D=w(K.cN,D,true)}}var C="";var H=0;try{var B,y,x=0;while(true){I.t.lastIndex=x;B=I.t.exec(L);if(!B){break}y=G(L.substr(x,B.index-x),B[0]);x=B.index+y}G(L.substr(x));for(var K=I;K.parent;K=K.parent){if(K.cN){D+="</span>"}}return{r:H,value:D,language:S,top:I}}catch(O){if(O.message.indexOf("Illegal")!=-1){return{r:0,value:k(L)}}else{throw O}}}function g(y,x){x=x||b.languages||Object.keys(f);var v={r:0,value:k(y)};var w=v;x.forEach(function(z){if(!j(z)){return}var A=c(z,y,false);A.language=z;if(A.r>w.r){w=A}if(A.r>v.r){w=v;v=A}});if(w.language){v.second_best=w}return v}function h(v){if(b.tabReplace){v=v.replace(/^((<[^>]+>|\t)+)/gm,function(w,z,y,x){return z.replace(/\t/g,b.tabReplace)})}if(b.useBR){v=v.replace(/\n/g,"<br>")}return v}function p(z){var y=d(z);var A=r(z);if(A=="no-highlight"){return}var v=A?c(A,y,true):g(y);var w=u(z);if(w.length){var x=document.createElementNS("http://www.w3.org/1999/xhtml","pre");x.innerHTML=v.value;v.value=q(w,u(x),y)}v.value=h(v.value);z.innerHTML=v.value;z.className+=" hljs "+(!A&&v.language||"");z.result={language:v.language,re:v.r};if(v.second_best){z.second_best={language:v.second_best.language,re:v.second_best.r}}}var b={classPrefix:"hljs-",tabReplace:null,useBR:false,languages:undefined};function s(v){b=o(b,v)}function l(){if(l.called){return}l.called=true;var v=document.querySelectorAll("pre code");Array.prototype.forEach.call(v,p)}function a(){addEventListener("DOMContentLoaded",l,false);addEventListener("load",l,false)}var f={};var n={};function e(v,x){var w=f[v]=x(this);if(w.aliases){w.aliases.forEach(function(y){n[y]=v})}}function j(v){return f[v]||f[n[v]]}this.highlight=c;this.highlightAuto=g;this.fixMarkup=h;this.highlightBlock=p;this.configure=s;this.initHighlighting=l;this.initHighlightingOnLoad=a;this.registerLanguage=e;this.getLanguage=j;this.inherit=o;this.IR="[a-zA-Z][a-zA-Z0-9_]*";this.UIR="[a-zA-Z_][a-zA-Z0-9_]*";this.NR="\\b\\d+(\\.\\d+)?";this.CNR="(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)";this.BNR="\\b(0b[01]+)";this.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~";this.BE={b:"\\\\[\\s\\S]",r:0};this.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[this.BE]};this.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[this.BE]};this.CLCM={cN:"comment",b:"//",e:"$"};this.CBLCLM={cN:"comment",b:"/\\*",e:"\\*/"};this.HCM={cN:"comment",b:"#",e:"$"};this.NM={cN:"number",b:this.NR,r:0};this.CNM={cN:"number",b:this.CNR,r:0};this.BNM={cN:"number",b:this.BNR,r:0};this.REGEXP_MODE={cN:"regexp",b:/\//,e:/\/[gim]*/,i:/\n/,c:[this.BE,{b:/\[/,e:/\]/,r:0,c:[this.BE]}]};this.TM={cN:"title",b:this.IR,r:0};this.UTM={cN:"title",b:this.UIR,r:0}}();hljs.registerLanguage("javascript",function(a){return{aliases:["js"],k:{keyword:"in
if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const class",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require"},c:[{cN:"pi",b:/^\s*('|")use strict('|")/,r:10},a.ASM,a.QSM,a.CLCM,a.CBLCLM,a.CNM,{b:"("+a.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[a.CLCM,a.CBLCLM,a.REGEXP_MODE,{b:/</,e:/>;/,r:0,sL:"xml"}],r:0},{cN:"function",bK:"function",e:/\{/,c:[a.inherit(a.TM,{b:/[A-Za-z$_][0-9A-Za-z$_]*/}),{cN:"params",b:/\(/,e:/\)/,c:[a.CLCM,a.CBLCLM],i:/["'\(]/}],i:/\[|%/},{b:/\$[(.]/},{b:"\\."+a.IR,r:0}]}});hljs.registerLanguage("css",function(a){var b="[a-zA-Z-][a-zA-Z0-9_-]*";var c={cN:"function",b:b+"\\(",e:"\\)",c:["self",a.NM,a.ASM,a.QSM]};return{cI:true,i:"[=/|']",c:[a.CBLCLM,{cN:"id",b:"\\#[A-Za-z0-9_-]+"},{cN:"class",b:"\\.[A-Za-z0-9_-]+",r:0},{cN:"attr_selector",b:"\\[",e:"\\]",i:"$"},{cN:"pseudo",b:":(:)?[a-zA-Z0-9\\_\\-\\+\\(\\)\\\"\\']+"},{cN:"at_rule",b:"@(font-face|page)",l:"[a-z-]+",k:"font-face page"},{cN:"at_rule",b:"@",e:"[{;]",c:[{cN:"keyword",b:/\S+/},{b:/\s/,eW:true,eE:true,r:0,c:[c,a.ASM,a.QSM,a.NM]}]},{cN:"tag",b:b,r:0},{cN:"rules",b:"{",e:"}",i:"[^\\s]",r:0,c:[a.CBLCLM,{cN:"rule",b:"[^\\s]",rB:true,e:";",eW:true,c:[{cN:"attribute",b:"[A-Z\\_\\.\\-]+",e:":",eE:true,i:"[^\\s]",starts:{cN:"value",eW:true,eE:true,c:[c,a.NM,a.QSM,a.ASM,a.CBLCLM,{cN:"hexcolor",b:"#[0-9A-Fa-f]+"},{cN:"important",b:"!important"}]}}]}]}]}});hljs.registerLanguage("xml",function(a){var c="[A-Za-z0-9\\._:-]+";var d={b:/<\?(php)?(?!\w)/,e:/\?>/,sL:"php",subLanguageMode:"continuous"};var b={eW:true,i:/</,r:0,c:[d,{cN:"attribute",b:c,r:0},{b:"=",r:0,c:[{cN:"value",v:[{b:/"/,e:/"/},{b:/'/,e:/'/},{b:/[^\s\/>]+/}]}]}]};return{aliases:["html"],cI:true,c:[{cN:"doctype",b:"<!DOCTYPE",e:">",r:10,c:[{b:"\\[",e:"\\]"}]},{cN:"comment",b:"<!--",e:"-->",r:10},{cN:"cdata",b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{cN:"tag",b:"<style(?=\\s|>|$)",e:">",k:{title:"style"},c:[b],starts:{e:"</style>",rE:true,sL:"css"}},{cN:"tag",b:"<script(?=\\s|>|$)",e:">",k:{title:"script"},c:[b],starts:{e:"<\/script>",rE:true,sL:"javascript"}},{b:"<%",e:"%>",sL:"vbscript"},d,{cN:"pi",b:/<\?\w+/,e:/\?>/,r:10},{cN:"tag",b:"</?",e:"/?>",c:[{cN:"title",b:"[^ /><]+",r:0},b]}]}});hljs.registerLanguage("php",function(b){var e={cN:"variable",b:"\\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*"};var a={cN:"preprocessor",b:/<\?(php)?|\?>/};var c={cN:"string",c:[b.BE,a],v:[{b:'b"',e:'"'},{b:"b'",e:"'"},b.inherit(b.ASM,{i:null}),b.inherit(b.QSM,{i:null})]};var d={v:[b.BNM,b.CNM]};return{cI:true,k:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",c:[b.CLCM,b.HCM,{cN:"comment",b:"/\\*",e:"\\*/",c:[{cN:"phpdoc",b:"\\s@[A-Za-z]+"},a]},{cN:"comment",b:"__halt_compiler.+?;",eW:true,k:"__halt_compiler",l:b.UIR},{cN:"string",b:"<<<['\"]?\\w+['\"]?$",e:"^\\w+;",c:[b.BE]},a,e,{cN:"function",bK:"function",e:/[;{]/,i:"\\$|\\[|%",c:[b.UTM,{cN:"params",b:"\\(",e:"\\)",c:["self",e,b.CBLCLM,c,d]}]},{cN:"class",bK:"class interface",e:"{",i:/[:\(\$"]/,c:[{bK:"extends implements",r:10},b.UTM]},{bK:"namespace",e:";",i:/[\.']/,c:[b.UTM]},{bK:"use",e:";",c:[b.UTM]},{b:"=>"},c,d]}});hljs.registerLanguage("python",function(a){var f={cN:"prompt",b:/^(>>>|\.\.\.) /};var b={cN:"string",c:[a.BE],v:[{b:/(u|b)?r?'''/,e:/'''/,c:[f],r:10},{b:/(u|b)?r?"""/,e:/"""/,c:[f],r:10},{b:/(u|r|ur)'/,e:/'/,r:10},{b:/(u|r|ur)"/,e:/"/,r:10},{b:/(b|br)'/,e:/'/,},{b:/(b|br)"/,e:/"/,},a.ASM,a.QSM]};var d={cN:"number",r:0,v:[{b:a.BNR+"[lLjJ]?"},{b:"\\b(0o[0-7]+)[lLjJ]?"},{b:a.CNR+"[lLjJ]?"}]};var e={cN:"params",b:/\(/,e:/\)/,c:["self",f,d,b]};var c={e:/:/,i:/[${=;\n]/,c:[a.UTM,e]};return{k:{keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda nonlocal|10 None True False",built_in:"Ellipsis NotImplemented"},i:/(<\/|->|\?)/,c:[f,d,b,a.HCM,a.inherit(c,{cN:"function",bK:"def",r:10}),a.inherit(c,{cN:"class",bK:"class"}),{cN:"decorator",b:/@/,e:/$/},{b:/\b(print|exec)\(/}]}});hljs.registerLanguage("sql",function(a){return{cI:true,i:/[<>]/,c:[{cN:"operator",b:"\\b(begin|end|start|commit|rollback|savepoint|lock|alter|create|drop|rename|call|delete|do|handler|insert|load|replace|select|truncate|update|set|show|pragma|grant|merge)\\b(?!:)",e:";",eW:true,k:{keyword:"all partial global month current_timestamp using go revoke smallint indicator end-exec disconnect zone with character assertion to add current_user usage input local alter match collate real then rollback get read timestamp session_user not integer bit unique day minute desc insert execute like ilike|2 level decimal drop continue isolation found where constraints domain right national some module transaction relative second connect escape close system_user for deferred section cast current sqlstate allocate intersect deallocate numeric public preserve full goto initially asc no key output collation group by union session both last language constraint column of space foreign deferrable prior connection unknown action commit view or first into float year primary cascaded except restrict set references names table outer open select size are rows from prepare distinct leading create only next inner authorization schema corresponding option declare precision immediate else timezone_minute external varying translation true case exception join hour default double scroll value cursor descriptor values dec fetch procedure delete and false int is describe char as at in varchar null trailing any absolute current_time end grant privileges when cross check write current_date pad begin temporary exec time update catalog user sql date on identity timezone_hour natural whenever interval work order cascade diagnostics nchar having left call do handler load replace truncate start lock show pragma exists number trigger if before after each row merge matched database",aggregate:"count sum min max avg"},c:[{cN:"string",b:"'",e:"'",c:[a.BE,{b:"''"}]},{cN:"string",b:'"',e:'"',c:[a.BE,{b:'""'}]},{cN:"string",b:"`",e:"`",c:[a.BE]},a.CNM]},a.CBLCLM,{cN:"comment",b:"--",e:"$"}]}});hljs.registerLanguage("apache",function(a){var b={cN:"number",b:"[\\$%]\\d+"};return{cI:true,c:[a.HCM,{cN:"tag",b:"</?",e:">"},{cN:"keyword",b:/\w+/,r:0,k:{common:"order deny allow setenv rewriterule rewriteengine rewritecond documentroot sethandler errordocument loadmodule options header listen serverroot servername"},starts:{e:/$/,r:0,k:{literal:"on off all"},c:[{cN:"sqbracket",b:"\\s\\[",e:"\\]$"},{cN:"cbracket",b:"[\\$%]\\{",e:"\\}",c:["self",b]},b,a.QSM]}}],i:/\S/}});
DTD Definici?n de Tipo de Documento. XML. Bartolom? Sintes Marco_files/indice.png
DTD Definici?n de Tipo de Documento. XML. Bartolom? Sintes Marco_files/mclibre_xml.css
/* XML: Lenguaje de Marcas Extensible
 Bartolomé Sintes Marco
 http://www.mclibre.org
 
 Hoja de estilo para el curso XML
 31 de marzo de 2014
*/
html { font-family: sans-serif; background-color: white; /* #F2F9E3; #EBF6D3; */
 text-align: justify; }
div.ejf, div.ejr { background-color: white; border: black 2px solid;
padding: 2px 5px 5px; margin: 10px 5px; width: 70%; text-align: justify; }
div.ejf { background-color: #D9EDF4; }
div.ejr { background-color: #D3F1D3; }
div.ejf h2 , div.ejr h2 { font-size: 120%; text-align: center; }
div.codphp { border: black 2px solid; background-color: white; 
padding: 0px 10px; margin: 0px 20px; }
div.codhtml { border: black 2px solid; background-color: white;
 padding: 0px 10px; margin: 0px 20px; }
div.codxml { border: black 2px solid; background-color: white;
 padding: 0px 10px; margin: 5px 20px; }
td.codxml { border: black 2px solid; background-color: white;
 padding: 0px 10px; margin: 0px 20px; vertical-align: top; }
td.ok { width: 40px; vertical-align: top;}
td.resul { width: 50%; padding: 4px; background-color: white; text-align: left; font-family: serif;
 vertical-align: top; }
.xml-eti { font-family: monospace; font-weight: bold; } 
.xml-pi { font-family: monospace; font-weight: bold; }
.xsl-i { font-family: monospace; font-weight: bold; }
.xsl-atri { font-style: oblique; background-color: MintCream; }
.resaltado { border: red 2px solid; padding: 1px; font-weight: bold; }
div.html { border: black 2px solid; background-color: white; 
padding: 10px 10px; margin: 0px 20px; }
.clear { clear: both; }
h2, h3, h4 { clear: both; }
.derecha { text-align: right; }
.php-fun { font-family: monospace; }
.php-dir { font-family: monospace; font-weight: bold; }
.php-var { font-family: monospace; font-weight: bold; }
.php-con { font-family: monospace; font-weight: bold; }
.html-eti { font-style: oblique; background-color: NavajoWhite; }.html-eti:hover { color: NavajoWhite; background-color: silver; }
.html-atri { font-style: oblique; background-color: MintCream; }
.html-atri:hover { color: MintCream; background-color: silver; }
.html-atri-valor { font-style: oblique; background-color: #eeeeee; }
.html-atri-valor:hover { color: NavajoWhite; background-color: silver; }
.css-sele { font-style: oblique; background-color: NavajoWhite; }
.css-prop { font-style: oblique; background-color: lightyellow; }
.css-valor { font-style: oblique; background-color: Aquamarine; }
.css-unidad { font-style: oblique; background-color: PaleGreen; }
.ff-atajo-teclado { font-family: monospace; font-weight: bold; font-size: 120%; }
.ff-menu { background-color: #D4D0C8; font-family: serif;}
.ie-menu { background-color: #D4D0C8; font-family: serif;}
div.diario { margin: 20px 50px 3px; padding-left: 20px; }
div.diario p.fecha { font-weight: bolder; margin-top: 0px; margin-left: -20px; padding: 5px }
div.gr1 { border: #C9C9FF 3px solid; background-color: #E7E7FF; }
div.gr1 p.fecha { background-color: #C9C9FF; color: #FFFFFF; }
div.gr2 { border: #B0E293 3px solid; background-color: #CEFFCE; }
div.gr2 p.fecha { background-color: #B0E293; color: #FFFFFF; }
table.bordetbody { border-collapse: collapse; }
table.bordetbody tbody { border-bottom: 5px black solid; }
address { border-top: black solid 1px; padding-top: 5px; margin-top: 10px; clear: both;}
p.licencia { text-align: center; }
table.ejemplo { width: 100%; border-spacing: 20px 5px; text-align: left; border-spacing: 5px; }
/* table.ejemplo td { width: 50%; vertical-align: top; border: #7D7D7D 2px solid; 
 padding: 0px 5px; } */
table.ejemplo3 td { width: 10%; vertical-align: top; border: #7D7D7D 2px solid; 
 padding: 0px 5px; } /* No lo entiendo, pero si pongo width: 33% lo hace pequeño */
table.sinborde td { border: none; }
td.codcss { width: 50%; background-color: white; border: black 2px solid; padding: 0px 5px;
 vertical-align: top;}
td.codhtml { width: 50%; background-color: white; border: black 2px solid; padding: 0px 5px;
 vertical-align: top;}td.codphp, td.codhtml { background-color: white; border: #7D7D7D 2px solid; padding: 0px 5px; }
td.resul-html { width: 50%; background-color: white; border: black 2px solid; padding: 0px 5px;}
td.resul-php { width: 50%; background-color: white; border: black 2px solid; padding: 0px 5px;}
td.conf { background-color: white; font-family: monospace; }
td.expl { background-color: white; }
td.sintaxis { background-color: white; font-family: monospace;} /* Sintaxis de PHP */
.incompleto { color: red; background-color: #FFFFFF; }
object.ejercicio { width: 90%; height: 400px; border: 2px solid black ;}
object.ejemplo { width: 90%; border: 2px solid black ;}
p.ejercicio { text-align: center;}
p.enlace-ejercicio { margin-right: 5%; text-align: right; font-size: 80%;}
/* Lo que viene a continuación son los restos de la CSS de Amaya */
h1 { font-size: 200%; text-align: center; margin-left: 75px; font-weight: bold;}
h1#indice { margin-left: 150px; }
h2 { font-size: 120%; }
h3 { font-size: 105%; }
h4 { font-size: 100%; font-weight: normal; text-decoration: underline;}
p { margin:5px 0px; }
p.aviso { margin:10px; padding: 10px; 
 border-left: 2px red solid; color:red; }
p.centrado { text-align: center; }
table.centrado { margin-left: auto; margin-right: auto; }
td.centrado, th.centrado { text-align: center; }
p.derecha { text-align: right; }
pre.fuente { background-color: #E0E0E0; color: black; padding: 3px 5px;
 border: #7D7D7D 2px solid; margin: 0px 10px; }
hr { width: 100%; clear: both; }
hr.corta { width: 50%; text-align: center; clear: both; }
table.indice td { vertical-align: top; }
col.centrado { padding: 0px 10px; text-align: center; }
ul { margin-top: 0px; }
li { clear: both; }
img#vpp { position: absolute; top: 5px; left: 5px; border:none; }
img.d { float: right; margin-left: 10px; margin-bottom: 5px; }
img.i { float: left; margin-right: 10px; margin-bottom: 5px; }
.captura img { border: black 2px dotted; padding: 5px;}
.captura { text-align: center; }
.regla { border: blue 2px solid; padding: 8px 3px;}
.selector { border: red 2px solid; padding: 5px 3px; }
.declara { border: green 2px solid; padding: 5px 3px; }
.propied { border: black 2px solid; padding: 2px; }
.valor { border: yellow 2px solid; padding: 2px; }
.menu { background-color: #D4D0C8; font-family: serif;}
DTD Definici?n de Tipo de Documento. XML. Bartolom? Sintes Marco_files/mclibre_xml_bn.css
/* XML: Lenguaje de Marcas Extensible
 Bartolomé Sintes Marco
 http://www.mclibre.org
 
 Hoja de estilo para el curso XML
 Hoja en blanco en negro para la impresora
 22 de enero de 2013
*/
html { font-family: sans-serif; background-color: white; 
 text-align: justify; }
h1 { font-size: 200%; text-align: center; margin-left: 75px; font-weight: bold;}
h1#indice { margin-left: 150px; }
h2 { font-size: 120%; }
h3 { font-size: 105%; }
h4 { font-size: 100%; font-weight: normal; text-decoration: underline;}
p { margin:5px 0px; }
p#ultmod { border-top: black solid 1px; padding-top: 5px; clear: both;}
p.aviso { margin:10px; padding: 10px; 
 border-left: 2px black solid; color:black; }
p.centrado { text-align: center; }
table.centrado { margin-left: auto; margin-right: auto; }
pre.fuente { background-color: white; color: black; padding: 3px 5px;
 border: black 2px solid; margin: 0px 10px; }
.fuente-num { color: black; }
hr { width: 100%; clear: both; }
hr.corta { width: 50%; text-align: center; clear: both; }
table.indice td { vertical-align: top; }
col.centrado { padding: 0px 10px; text-align: center; }
ul { margin-top: 0px; }
li { clear: both; }
img#vpp { position: absolute; top: 5px; left: 5px; border:none; }
img.d { float: right; margin-left: 10px; margin-bottom: 5px; }
img.i { float: left; margin-right: 10px; margin-bottom: 5px; }
.regla { border: black 2px solid; padding: 8px 3px;}
.selector { border: black 2px solid; padding: 5px 3px; }
.declara { border: black 2px solid; padding: 5px 3px; }
.propied { border: black 2px solid; padding: 2px; 2px; }
.valor { border: black 2px solid; padding: 2px; 2px; }
.barresta { background-color: white; font-family: serif;}
.menu { background-color: white; font-family: serif;}
.amaya-bug { border-left:
black 4px double; border-right: red 4px double; 
 margin: 0px 10px; padding: 0px 10px;}
.incompleto { color: black; background-color: white; }
div.codphp { border: black 2px solid; padding: 0px 10px; margin: 0px 20px; }
div.codcss { border: 2px solid #7F7F80; background-color: white; 
 margin: 5px 20px; padding: 10px 10px; white-space: pre}
.css-prop { font-weight: 600 ; background-color: white; }
.css-prop:hover { color: black; background-color: white; }
.css-valor { font-weight: 600 ; background-color: white; }
.css-valor:hover { color: black; background-color: white; }
.css-pseudo { font-weight: 600 ; background-color: white; }
.css-pseudo:hover { color: black; background-color: white; }
.html-eti { font-weight: 600 ; background-color: white; }
.html-eti:hover { color: black; background-color: white; }
.html-atri { font-weight: 600 ; background-color: white; }
.html-atri:hover { color: black; background-color: white; }
.html-atri-valor { font-weight: 600; background-color: white; }
.html-atri-valor:hover { color: black; background-color: white; }
table.ejemplo { width: 100%; border-spacing: 20px 5px; text-align: left;}
td.codcss { width: 50%; vertical-align: top; 
 background-color: white; border: black 2px solid; padding: 0px 5px;
}
td.resul { width: 50%; vertical-align: top; background-color: white; 
 }
table.ejemplo td { border: black 2px solid; }
table.ejemplo2 td { border: black 2px solid; }
table.ejemplo3 td { border: black 2px solid; }
table.listado { border: none; text-align: left; }
/*table.listado td { border: none; border-bottom: black 1px solid; text-align: left;}*/
table.listado tr.titulo td { border: none; border-top: white 20px solid; background-color: white;
 font-weight: bolder; }
table.listado tr.cabecera td { border: none; border-bottom: black 2px solid;}
table.listado col.propiedad { width: 9em; }
table.listado col.descripcion { width: 15em; }
math { font-family: sans-serif; font-size: 105%; }
DTD Definici?n de Tipo de Documento. XML. Bartolom? Sintes Marco_files/okno.png
DTD Definici?n de Tipo de Documento. XML. Bartolom? Sintes Marco_files/oksi.png

Otros materiales

Materiales relacionados

8 pag.
apunte1

SIN SIGLA

User badge image

Pepe

9 pag.
apunte2

SIN SIGLA

User badge image

Pepe