Información general sobre XML
El lenguaje de marcado extensible (XML) es un lenguaje para definir un conjunto de marcadores, llamados etiquetas, que se aplican a un conjunto de datos o documento para describir la función de elementos individuales y codificar las relaciones jerárquicas entre ellos. Las etiquetas XML se parecen mucho a las etiquetas de lenguaje de marcado de hipertexto (HTML), pero XML es en realidad un metalenguaje utilizado para definir las etiquetas que mejor se adaptan al tipo de datos que se marcan.
Para obtener más detalles acerca de XML, vea Una introducción técnica a XML en http://www.xml.com/pub/a/98/10/guide0.html y el material de referencia adicional en el sitio de http://www.xml.com . La especificación XML oficial del World Wide Web Consortium (W3C), Extensible Markup Language (XML) 1.0, está disponible en http://www.w3.org/TR/REC-xml.
En las secciones siguientes se describen aspectos generales de XML:
Elementos de etiqueta
XML tiene tres tipos de etiquetas: etiquetas de apertura, etiquetas de cierre y etiquetas vacías. Los nombres de las etiquetas XML están entre corchetes angulares y distinguen entre mayúsculas y minúsculas. Los elementos de un documento o conjunto de datos compatible con XML siempre están encerrados en etiquetas de apertura y cierre emparejadas, y las etiquetas deben estar anidadas correctamente. Es decir, debe cerrar las etiquetas en el mismo orden en que las abrió. XML es más estricto en este sentido que HTML, que a veces utiliza sólo etiquetas de apertura. En los ejemplos siguientes se muestran etiquetas de apertura y cierre pareadas que encierran un valor. Las etiquetas de cierre se indican mediante la barra diagonal al principio del nombre de la etiqueta.
<interface-state>enabled</interface-state> <input-bytes>25378</input-bytes>
El término elemento de etiqueta se refiere a un conjunto de tres partes: etiqueta de apertura, contenido y etiqueta de cierre. El contenido puede ser una cadena de caracteres alfanuméricos, como en los ejemplos anteriores, o puede ser un elemento de etiqueta contenedor, que contiene otros elementos de etiqueta. Para simplificar, el término etiqueta a menudo se usa indistintamente con elemento o elemento de etiqueta.
Si un elemento de etiqueta está vacío (no tiene contenido), se puede representar como etiquetas de apertura y cierre emparejadas sin nada entre ellas, o como una sola etiqueta con una barra diagonal después del nombre de la etiqueta. Por ejemplo, la notación <snmp-trap-flag/>
es equivalente a <snmp-trap-flag></snmp-trap-flag>
.
Como muestran los ejemplos anteriores, los corchetes angulares encierran el nombre del elemento de etiqueta. Se trata de una convención XML y los corchetes son una parte obligatoria del nombre completo del elemento de etiqueta. No deben confundirse con los corchetes angulares utilizados en la documentación de Juniper Networks para indicar partes opcionales de las cadenas de comandos de la CLI de Junos OS.
Los elementos de etiqueta XML de Junos obedecen a la convención XML de que el nombre del elemento de etiqueta indica el tipo de información que incluyen las etiquetas. Por ejemplo, el nombre del elemento de etiqueta XML <interface-state>
de Junos indica que contiene una descripción del estado actual de una interfaz en el dispositivo, mientras que el nombre del<input-bytes>
elemento de etiqueta indica que su contenido especifica el número de bytes recibidos.
Cuando se discuten los elementos de etiqueta en el texto, esta documentación utiliza convencionalmente solo la etiqueta de apertura para representar el elemento de etiqueta completo (etiqueta de apertura, contenido y etiqueta de cierre). Por ejemplo, la documentación hace referencia a la <input-bytes>
etiqueta para indicar todo <input-bytes>number-of-bytes</input-bytes>
el elemento de etiqueta.
Atributos
Los elementos XML pueden contener propiedades asociadas en forma de atributos, que especifican información adicional acerca de un elemento. Los atributos aparecen en la etiqueta de apertura de un elemento y constan de un par de nombre de atributo y valor. La sintaxis del atributo consiste en el nombre del atributo seguido de un signo igual y, a continuación, el valor del atributo entre comillas. Un elemento XML puede tener varios atributos. Varios atributos están separados por espacios y pueden aparecer en cualquier orden.
En el ejemplo siguiente, el configuration
elemento tiene dos atributos junos:changed-seconds
y junos:changed-localtime
.
<configuration junos:changed-seconds="1279908006" junos:changed-localtime="2010-07-23 11:00:06 PDT">
El valor del junos:changed-seconds
atributo es "1279908006" y el valor del junos:changed-localtime
atributo es "2010-07-23 11:00:06 PDT".
Espacios de nombres
Los espacios de nombres permiten que un documento XML contenga los mismos nombres de etiqueta, atributo o función para diferentes propósitos y evitar conflictos de nombres. Por ejemplo, muchos espacios de nombres pueden definir una print
función y cada uno puede exhibir una funcionalidad diferente. Para usar la funcionalidad definida en un espacio de nombres específico, debe asociar esa función con el espacio de nombres que define la funcionalidad deseada.
Para hacer referencia a una etiqueta, atributo o función de un espacio de nombres definido, primero debe proporcionar el identificador uniforme de recursos (URI) del espacio de nombres en la declaración de la hoja de estilos. A continuación, califique una etiqueta, atributo o función del espacio de nombres con el URI. Dado que un URI suele ser largo, generalmente se asigna un prefijo más corto al URI.
En el ejemplo siguiente, el jcs
prefijo se asigna al espacio de nombres identificado por el URI http://xml.juniper.net/junos/commit-scripts/1.0
, que define las funciones de extensión usadas en los scripts commit, op, event y SNMP. A continuación, el jcs
prefijo se antepone a la función, que se define en ese espacio de output
nombres.
<?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:jcs="http://xml.juniper.net/junos/commit-scripts/1.0"> ... <xsl:value-of select="jcs:output('The VPN is up.')"/> </xsl: stylesheet>
Durante el procesamiento, el prefijo se expande en la referencia del URI. Aunque puede haber varios espacios de nombres que definen un output
elemento o función, el uso de jcs:output
define explícitamente qué output
función se utiliza. Puede elegir cualquier prefijo para hacer referencia al contenido de un espacio de nombres, pero debe haber una declaración existente en el documento XML que enlace el prefijo al URI asociado.
Definición del tipo de documento
Un documento o conjunto de datos con etiquetas XML está estructurado, ya que un conjunto de reglas especifica el orden y las interrelaciones de los elementos que contiene. Las reglas definen los contextos en los que cada elemento etiquetado puede, y en algunos casos debe, ocurrir. Un archivo denominado definición de tipo de documento, o DTD, enumera todos los elementos de etiqueta que pueden aparecer en el documento o conjunto de datos, define las relaciones padre-hijo entre las etiquetas y especifica otras características de etiqueta. La misma DTD puede aplicarse a muchos documentos XML o conjuntos de datos.