XML: Extensible Markup Language.

Iniciado por + enrique ZP, 11 Abril 2005, 02:27 AM

0 Miembros y 1 Visitante están viendo este tema.

+ enrique ZP

IntroduccioN.


Un Poco de Historia:

La primera version del lenguaje XML osea la version 1.0 nace de una recomendacion del W3C a principios del año 1988, aunque ya se habia trabajado en su desarrollo años antes. Este lenguaje esta basado en el antiguo estandar SGML cuyas siglas representan (Standard Gene ralized Markup Language ISO 8879) ademas de este estandar esta basado en el GML el cual fue creado por IBM. Como puedes ver el XML a muchos les puede parecer moderno,  pero no lo es, ya que sus concetpos ya son bastante viejos y esta basado en estandares antiguos. El XML es un modelo de objetos (en forma de API) que permite entrar a diferentes partes de un documento codificado en HTML o XML.


Caracteristicas:

- El XML significa Extensible Markup Language.
- El XML es un lenguaje parecido al HTML.
- El XML fue diseñado de tal forma que sirviera para describir data.
- Los tags XML no son predefinidos. Esto significa que tienes que definir los tags tu mismo.
- El XML usa el (DTD) Document Type Definition o un XML Shema para describir el data
- El XML con un DTD o XML Shema estan diseñados para ser auto descriptivos
- XML puede separar datos en HTML.
- Podemos intercambiar informacion financiera con XML.
- Con XML podemos transferir archivos entre 2 sistemas incompatibles.
- Con XML los textos planos puede ser facilmente usados para guardar datos.
- El XML permite que mas usuarios de la internet y redes locales tengan acceso a la informacion de una manera mas facil.
- WAP y WML nacen del XML.


Diferencias Principales con el HTML:

- El XML fue diseñado para llevar y describir datos, ademas fue creado para poder decir que significan los datos.
- El XML nunca sera ni es un sustituto para el HTML.
- El HTML es para mostrar los datos, y proecuparse en como se ven los datos.

Hago enfatiz en esto, es importantisimo que comprendamos que el XML no es un sustituto de el HTML.


Ejemplo de XML:

El siguiente ejemplo es una nota de NoBaLoGiC a ElHacker.NeT, codificada en XML.

<note>
<to>ElHacker.NeT</to>
<from>NoBaLoGiC</from>
<heading>Hola</heading>
<body>Como has estado?</body>
</note>


Como se puede observar esta pequeña nota consta de una Cabezera y un Cuerpo. Tambien tiene un Recevier y un Sender. Ademas observen que el XML no sirve para mucho, para que funcione se necesita de algun otro codigo en otro lenguaje o un software que lo muestre. El XML no se puede valer por si solo. Es pura informacion cubierta por tags inservibles a menos que se le integre a otro codigo.


XML libre y extendido:

Una de las cosas que mas me gusta del XML es que nos permite crear nuestros propios tags a diferencia del HTML que ya estan creados. El XML nos da la oportunidad de inventar y definir cuantos tags queramos. Es decir, en HTML tenemos tags como [(<p> - <h1> - etx...)] y en el XML podemos poner tags como [(<to> - <from> <etx...>)] Es decir que estos tags los inventa el dueño del documento XML, vale yo no invente estos creo pero los pongo como ejemlpo.


Sintaxys:

<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>ElHacker.NeT</to>
<from>NoBaLoGiC</from>
<heading>HolA</heading>
<body>Como has estado?</body>
</note>


Podemos observar que la primera linea de el codigo hayamos la declaracion del XML, hayamos la codificacion y version usados en el documento.

<?xml version="1.0" encoding="ISO-8859-1"?>

En la siguiente linea describe el elemento root de el documento, es como decir [(este documento es tan solo una nota)]

<note>

Las proximas lineas describen los elementos que trae integrado el root, es decir [(to, from, heading, y el body)]

<to>ElHacker.NeT</to>
<from>NoBaLoGiC</from>
<heading>HolA</heading>
<body>Como has estado?</body>


Y como es de esperar, la ultima linea la que define que el elemento root a concluido.

</note>

Todos los elementos en XML necesitan llevar un tag que los concluya, si no los llevan se jode todo.

En HTML algunos tags no necesitan llevar un tag que los concluya

<p> NoBaLoGiC is Lagarto Juancho
<p> Lagarto Juancho is NoBaLoGiC


En XML es obligatorio que los lleven

<p>NoBaLoGiC is Lagarto Juancho</p>
<p>Lagarto Juancho is NoBaLoGiC</p>


En el XML todos los tags son case sensitive, esto significa que o mayuscula o minuscula no las dos a la misma vez

<Letter>Incorrecto</letter>

<letter>Correcto</letter>


Los tags en XML siempre tienen que estar ordenador de la manera mas correcta. A diferencia que en HTML pueden estar ordenados de cualquier manera.

<u><b>Incorrecto</u></b>
<u><b>Correcto</b></u>


Para crear un commentario en XML se haria de la siguiente manera.

<!-- El comentario aqui -->
<!-- Tu eres muy feo xD -->


Esto es una introduccion al meta-lenguaje XML. Ya pronto comenzare con la parte avanzada, y un poco de ejercicios para que practiquen un poco

Author: NoBaLoGiC

+ enrique ZP

#1
Los NameSpaces

La vez pasada casi todo era facil, pero en esta parte vamos a aprender a solucionar errores y plantear de una mejor manera los codigos. Solo se necesitan ganas de leer y practicar.

El XML Namespaces provee algunos metodos para evadir y evitar conflictos de elementos y nombres, estos seran explicados a continuacion.

Conflictos de Nombre y Elementos

Como los elementos y nombres en documentos XML no han sido reparados, conflictos de nombres y elementos sucederan amenudo, estos van a suceder por la razon de usar dos nombres iguales describiendo dos tipos de elementos diferentes.

Este documeto XML traffica informacion en una table:

<table>
   <tr>
   <td>Webmaster</td>
   <td>Coder</td>
   </tr>
</table>


Este documento XML trafica informacion sobre una table.

<table>
   <name>Foro de Informatica</name>
   <width>80</width>
   <length>120</length>
</table>


Si estos dos documentos XML fueran sumados y hechos uno solo, habrian conflictos de nombres y elementos. Esto pasa porque ambos documentos presantan y contienen un elemento <table> con diferentes contenidos y definiciones pero con el mismo nombre.

Ahora les voy a mostrar una manera para solucionar estos conflictos.

Solucionando conflictos de nombres y elementos usando prefijos:

Este documento XML trafica informacion en una table:

<h:table>
   <h:tr>
   <h:td>Webmaster</h:td>
   <h:td>Coder</h:td>
   </h:tr>
</h:table>


Este documento XML trafica informacion sobre una table:

<f:table>
   <f:name>Foro de Informatica</f:name>
   <f:width>80</f:width>
   <f:length>120</f:length>
</f:table>


Como puedes observar si has practicado, el conflicto a sido solucionado por la simple razon de que ahora usan diferentes nombres <table> (<h:table> y <f:table>).

Este conflicto fue solucionado al crear dos tipos difrentes de elementos <table>

Usando el NameSpaces:

Este documento XML trafica informacion en una table.

<h:table xmlns:h="http://www.w3.org/TR/html4/">
   <h:tr>
   <h:td>Webamaster</h:td>
   <h:td>Coder</h:td>
   </h:tr>
</h:table>


Este documento XML trafica informacion sobre una table:

<f:table xmlns:f="http://www.elhacker.net/foro">
   <f:name>Foro de Informatica</f:name>
   <f:width>80</f:width>
   <f:length>120</f:length>
</f:table>


Esta vez no vamos a usar prefijos, un atributo xmlns se le a sumado el tag <table> para dar al elemento un prefijo clasificado name associated con un spacename.

El atributo del NameSpace:

El atributo de el namespace es colocado al principio de el tag de un elemento y tiene el sintaxis siguiente:

xmlns:namespace-prefix="namespace"

En el ejemplo arriba, el namespace por si solo esta definido usando una URL.

xmlns:f="http://www.elhacker.net/foro"

El especificado W3C namespace dice que el namespace por si mismo deberia deberia de ser un (URI) Uniform Resource Identifier.
Cuando un namespace es definido en el comienzo de un elemento tag, todos los elementos child con el mismo prefijo son associadas con el mismo namespace.

Fijate que la URL que usas para indentificar el namspace, no es usada por el parser para buscar informacion. El unico proposito es darle el namspace a un nombre unico. Aunque, muy a menudo algunas webs usan el namespace como un pointer, cosa que veo absurda ya que lo que queremos hacer es expesificar de que trata nuestra web. Trata de visitar http://www.w3.org/TR/html4/ para que te informes.


(URI) Uniform Resource Identifiers:

Pues si no me supieron entender cuando dije algo de (URI) ahora les explico que significa. (URI) es un cordon de caracteres los cuales identifican recursos en el internet. El (URI) mas comun es el que todos conocemos como (URL) Uniform Resource Locator el cual identificca dominios y direcciones en la internet. Otro (URI) no tan comun es el (URN) Universal Resource Name.
Como el mas conocido es el URL en los ejemplos solo voy a utilizar estos.


NameSpace por Default:

Cuando ocupamos esta tecnica, nos ahorra usar lo de los prefijos en todo los childs. Esta topologia tiene el siguiente syntaxis:

<element xmlns="namespace">

Este documento XML trafica informacion en una table:


<table xmlns="http://www.w3.org/TR/html4/">
   <tr>
   <td>Webmaster</td>
   <td>Coder</td>
   </tr>
</table>


Este documento XML trafica informaicon sobre una table.

<table xmlns="http://www.elhacker.net/foro">
   <name>Foro de Informatica</name>
   <width>80</width>
   <length>120</length>
</table>



Uso real del NameSpace

Cuando se comienzes a usar XSL, van a ver el uso the namespaces en accion. Los XSL son como ojas te estilo transformados a otro formato como el HTML.

Si das una buena mirada al script abajo veras, que la mayoria de los tags son tags HTML. Los que no son HTML tienen los prefijos XSL, y estan identificados por el namespace " "http://www.w3.org/TR/xsl":. Ahora si me entendieron pasemos a analizar el script.

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/xsl">
<xsl:template match="/">
  <html>
  <body>
    <table border="2" bgcolor="yellow">
      <tr>
        <th>NoBaLoGiC</th>
        <th>Lagarto Juancho</th>
      </tr>
      <xsl:for-each select="CATALOG/CD">
      <tr>
        <td><xsl:value-of select="TITLE"/></td>
        <td><xsl:value-of select="ARTIST"/></td>
      </tr>
      </xsl:for-each>
    </table>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>


XML CDATA

Todo texto dentro de un documento XML va a ser parsiado por el parser.
Solo el texto dentro de la sección CDATA va a ser ignorado por el parser.

Parsed Data

Los parser XML normalmente parsean todo los textos en un documento XML.
Cuando un elemento XML es parseado, el texto entre los tags XML tambien lo es.

<message>Este texto quedo parseado xD</message>

El parser toma estas medidas porque los elementos XML pueden contener a otros elements, mira el ejemplo del script abajo, el element <name> contiene dos elementos mas (<first> y <last>:

<name><first>QuiQue</first><last>NoBaLoGiC</last></name>

entonces el parser lo va a desintegrar a sub elementos como estos:

<name>
   <first>QuiQue</first>
   <last>NoBaLoGiC</last>
</name>


Con el proposito de que este mas ordenado.

Caracteres de Escape:

Caracteres XML que son ilegales tienen que ser borrados y cambiados por unos verdaderos.
Si puedes colocar un caracter como "<Dentro de un elemento XML, este automaticamente te va a generar error porque el parser lo interpretara como si fuera el principio de un elmento nuevo. Es decir que no puedes escribir algo como esto:

<message>este foro <es el mejor</message>

Para evitar esto, lo unico que tendras que hacer es lo siguiente: "<un caracter con una entrada igual a esta:

<message>este foro &lt; es el mejor</message>

Hay 5 entitys que estan predeterminadas en las referencias XML:

Citar&lt;    <    less than
&gt;    >    greater than
&amp;    &    ampersand
&apos;    '    apostrophe
&quot;    "    quotation mark

Estas entitys siempre comienzan con el caracter "&" y terminan con el ";"

Author: NoBaLoGiC


continuara...

+ enrique ZP

Aqui les dejo unos cuantos tutoriales de XML mucho mas completos que el mio...

XML Bible 4.826 Kb.
http://www.evilgirls.net/manuales3ymedio/XML_Bible.zip

XML By Example 5.318 Kb.
http://www.evilgirls.net/manuales3ymedio/XML_By_Example.zip

Introduction to XML 1.950 Kb.
http://www.evilgirls.net/manuales3ymedio/Introduction_to_XML.zip

XML Tutorial for Programmers 5.318 Kb.
http://www.evilgirls.net/manuales3ymedio/XML_Tutorial_for%20_Programmers.zip

Ahora mas tarde les pongo unos ejercicios por si alguien se anima a practicarlos jeje.

Hasta Pronto :D

+ enrique ZP

Algunas dudas y post sobre XML en el foro

XML
http://foro.elhacker.net/index.php/topic,70349.0.html

Alimentadores RSS
http://foro.elhacker.net/index.php/topic,69929.0.html

Otras Webs:

www.google.com

Muy bueno ;) es muy explicativo de como armar este sistema y trae muchos ejemplos

Motivación, Introducción y Explicación
http://es.tldp.org/Tutoriales/APACHE-COCOON-2/multiple-html/

Hasta Pronto ;)

electronik_0

Gracias man, nunca esta de mas un poquito de historia :D  :silbar:

Nheo_X

Quisiera saber que tutorial me recomiendas y si es que me pones la dirección seria fantántico para aprender XML con Flas Action Script y base de datos se te agradece de antemano