|
El XML: Nota 2
La
estructura de un documento XML
La estructura
de un documento XML es flexible y rígida a la vez. Existen
unas pocas reglas que debemos seguir para crear un documento
XML, una vez que lo hicimos, tenemos un documento de datos
altamente estructurado.
Al ser altamente estructurado,
es fácil para un programa interpretar los datos, esto se logra
a través del XML-DOM (modelo de objeto de documento
XML).
Hay dos usos comunes del XLM-DOM. El primero que
vamos a ver es el uso del XML en JavaScript. El segundo es el
uso del lenguaje de hoja de estilo diseñado para XML, el XSL
(eXtensible StyLe-sheet Language). El XSL es un lenguaje
bastante extenso, y puede mostrar XML dentro de un formato
HTML.
El documento XML
Como el XML es
estructurado, debemos seguir reglas estrictas cuando
programamos.
Las reglas que vimos hasta ahora
eran:
1. Debemos comenzar con una declaración diciendo
que el documento es XML 2. Todos los datos XML deben estar
contenidos en un elemento raíz. 3. Todos los elementos
tienen que estar cerrados 4. Los elementos de abrir y de
cerrar deben coincidir en mayúsculas y minúsculas, ej.:
<name></name>, no <name></NAME> 5.
Los atributos deben ponerse entre comillas.
Veamos qué
son los atributos
Un atributo en XML es muy parecido a
un atributo HTML, excepto que en XML podemos definir nuestros
propios nombres de atributos.
<?xml
version="1.0"?> <emptyXML
content="empty"/>
Y no estamos limitados al elemento
raíz.
<?xml version="1.0"?> <continentes
content="Continentes del Mundo"> <data
item="1">Africa</data> <data
item="2">America</data> <data
item="3">Asia</data> <data
item="4">Europa</data> <data
item="5">Oceania</data> </continentes>
Recordemos
que los atributos SIEMPRE deben colocarse entre comillas. Si
sacamos las comillas el Internet Explorer dará un error. Si
tuviéramos que definir un elemento XML
pondríamos:
<nombreelemento atributo1="valor1"
atributo2="valor2">texto</nombreelemento>
Elementos
anidados (nested elements)
Ya vimos elementos anidados,
los elementos <data> en el ejemplo de los continentes
están anidados dentro del elemento raíz
<continentes>.
También podemos anidar elementos
dentro del documento. Un documento más grande se vería
así:
<?xml
version="1.0"?> <continentes> <nombre
continente="Africa"> <superficie>3035000</superficie> </continente> <nombre
continente="America"> <superficie>42960000</superficie> </continente> <nombre
continente="Asia"> <superficie>43608000</superficie> </continente> <nombre
continente="Europa"> <superficie>10498000</superficie> </continente> <nombre
continente="Oceania"> <superficie>22263000</superficie> </continente> </continentes>
Este
documento utiliza atributos y elementos anidados. Aquí se nota
la similitud entre atributos y elementos anidados. El atributo
podría ser un elemento,
ej.:
<continente> <nombre>Africa</nombre> <superficie>30335000</superficie> </continente>
Esto
es un tema de diseño, los diferentes conjuntos de datos
tenderán a utilizar o bien atributos o bien
elementos.
También podemos anidar dentro de un nido,
etc.
<continente> <nombre>Africa</nombre> <superficie>30335000</superficie> <paises> <pais>Egipto</pais> <pais>Marruecos</pais> <pais>Sudan</pais> </paises> </continente>
Comentarios
Ningún
lenguaje de programación estaría completo sin la capacidad de
añadirle comentarios, XML no es la excepción.
Un
comentario XML comienza con <! -- y termina con --
> <?xml version="1.0"?> <! -- Comentario
XML --> <cualquier cosa/> <!--otro
comentario-->
Como debemos tener un elemento raíz,
<cualquier cosa/> sirve para esto.
XML DOM
(Document Object Model)
Para poder procesar la
información que contiene un documento XML, debemos
interpretarla (parse), y el DOM facilita esto.
El
XML-DOM le permite a un programa acceder a todas las partes de
un documento XML. Existen varios programas disponibles en
varios lenguajes, el XML fue diseñado para ser lo más portable
posible.
Podemos acceder el XML-DOM a través de
JavaScript "client-side". Veamos cómo se hace
esto.
Crear un objeto XML-DOM en
JavaScript.
Podemos usar un documento XML bien formado
que hayamos hecho o podemos usar los ejemplos de esta
nota.
Tenemos que cargar este documento en JavaScript,
donde podamos manipular los datos a nuestro antojo. Esto se
logra creando un objeto XML-DOM, que es el esqueleto para
todos los documentos XML.
Cargamos el documento XML en
el objeto XML-DOM, y ahora podemos acceder los elementos
individuales del documento XML en el objeto
XML-DOM.
Alternativamente, podemos crear una isla XML
usando el elemento <xml> en HTML. Se le asigna
automáticamente a la isla una estructura XML-DOM para que
utilicemos.
Podemos crear una isla XML dinámicamente
utilizando la función createElement. Para cargar un
documento XML, o usamos el método load() si estamos utilizando
la técnica ActiveXObject, o asignamos el archivo XML a la
propiedad src para las técnicas de islas.
Estas tres
técnicas pueden verse en el siguiente
ejemplo.
<HTML> <HEAD> <TITLE>XMLDOM
Object</TITLE> <SCRIPT> function go()
{ msXML=new
ActiveXObject("microsoft.xmldom"); msXML.load('continentes.xml'); alert('msXML=new
ActiveXObject("microsoft.xmldom");\n'+msXML.text); ceXML=document.createElement("xml"); ceXML.src='continentes.xml'; document.body.appendChild(ceXML); alert('ceXML=document.createElement("xml");\n'+ceXML.text); alert('<XML
ID="XMLIsland"
SRC="continentes.xml">\n'+XMLIsland.text); alert('finished'); } </SCRIPT> </HEAD> <XML
ID="XMLIsland"
SRC="continentes.xml"> </XML> <BODY
onload="go();"> </BODY> </HTML>
Deberíamos
poder ver la lista de continentes tres veces, cada vez
precedida de la técnica que se está demostrando en particular,
y después "finished", indicando que el programa ha
finalizado.
Aspectos del XML-DOM
En la sección
anterior vimos una de las funciones del documento XML, la
propiedad text.
La propiedad text (texto) lee todo el
texto del documento XML, no cualquier elemento, atributo o
comentario.
Existen otras propiedades, vamos a
utilizarlas para navegar el "arbol" XML-DOM.
Algunas de
las propiedades comúnmente utilizadas son:
-
documentElement: el elemento raíz - text: el texto
contenido dentro de los tags de apertura y de cierre del
elemento - nodeName: el nombre del elemento -
childNodes: una colección de los elementos anidados de un
elemento - item: se accede con la propiedad item -
attributes: una colección de atributos para un
elemento
Cuando navegamos un documento XML, siempre
tenemos que referirnos primero al elemento raíz. Esto es
porque todos los elementos son "children" de este elemento, y
debemos utilizar un esquema de referencia estricto para
acceder a los
datos.
<HTML> <HEAD> <TITLE>Aspects
of XMLDOM</TITLE> <SCRIPT> function go()
{ alert(XMLIsland.documentElement.nodeName); alert(XMLIsland.documentElement.text); alert(XMLIsland.documentElement.attributes[0].nodeName); alert(XMLIsland.documentElement.attributes[0].text); } </SCRIPT> </HEAD> <XML
ID="XMLIsland"
SRC="continentes.xml"> </XML> <BODY
onload="go();"> </BODY> </HTML>
Este
programa muestra tres propiedades del
documentElement.
El JavaScrip es un lenguaje bastante
complicado para presentar datos XML, no posee un rango de
comandos grande como para mostrar directamente los datos en
pantalla, al contrario del HTML, que si lo hace.
Pero
el HTML no se integra perfectamente con el XML, y tampoco
permite las sutilezas de éste.
La unión del XML con el
HTML es el XSL, que es al XML lo que las CSS (cascade style
sheets) son al HTML.
En otras notas exploraremos el
XLS. |