Mark Wilson I am the creator of TopXML. I am available for international and local (Australia) contracts. I am a Solution Architect/Business Analyst. I have worked in IT in several countries (NZ, Australia, South Africa, UK) building and training teams for government and very large non-governmental organizations. I am ex-Microsoft Consulting Services. I wrote the first book on Microsoft XML published in 2000 called XML Programming with VB and ASP. Most recently I have been building tools for the SEO industry. Ask me for a 37 point SEO health-checkup for your website.
XML son las siglas de eXtensible Markup Language (Lenguaje eXtensible de Marcas)
y fue aprobado por el World Wide Web Consortium (W3C) en febrero de 1998.
XML no es en realidad un nuevo lenguaje, es un metalenguaje.
Se usa para definir otros lenguajes.
XML crea documentos que están bien estructurados y en consecuencia todos los
lenguajes basados en XML son también bien estructurados. Esto implica que los
datos en XML son más fácilmente utilizables.
Así, XML es la base para una forma enteramente nueva de comunicación a
través de Internet, porque posibilita a las empresas y a sus sistemas informáticos
comunicarse más fácilmente.
XML se utiliza para crear otros lenguajes de marcas
XML se utiliza para crear otros lenguajes de marcas. Uno de los
más conocidos es XSL. XSL está basado en XML. La relación entre XML y XSL es de suma
importancia. Si XML son los datos en bruto, entonces XSL se usa para convertir esos
datos en bruto en un formato de datos utilizable.
Por ejemplo XSL puede ser usado para poner color en el XML, o cambiar el
documento XML en alguna otra cosa.
El desarrollo del estándar XML está dirigido por el W3C.
¿Quién es el W3C? (World Wide Web Consortium)
El W3C fue fundado en octubre de 1994. Su cometido es desarrollar protocolos
de uso común a través de un "consorcio internacional de la industria".
http://www.w3.org
En el W3C, usted puede encontrar:
Un repositorio de información acerca del WWW para
desarrolladores y usuarios.
Código de referencia para la implementación de los
distintos estándares.
Prototipos diversos y aplicaciones de ejemplo para demostrar el uso de nuevas tecnologías fomentadas por el W3C.
El W3C es una colección de grupos interesados que se reúnen para
discutir acerca de nuevas tecnologías en Internet. Su proceso es bastante considerable
y profundo, y tiene como resultado una decisión consensuada (aunque existen historias en
el web de decisiones tomadas a la fuerza dentro de los grupos de trabajo); de
cualquier forma el resultado final tiene un gran impulso.
¿Cómo trabaja el W3C?
Primero alguien (un grupo, una compañía, una persona) eleva una nota acerca de una
tecnología o un asunto técnico al W3C. Después de un montón de debate y consultas, se
crea una propuesta de borrador. Con suerte y mucho trabajo, se puede llegar a una
recomendación. En este momento, la tecnología se considera lista para su adopción en
la industria.
La idea que comenzó como una nota ahora se ha vuelto 'oficial'. Según el W3C,
esta tecnología está lista para su uso.
Qué no es el W3C
El W3C no hace las veces de policía. No impone los acuerdos hechos o las
tecnologías diseñadas. Cada una de las partes involucradas puede (y a menudo lo hacen)
"extender" o mejorar los diseños.
XML no sólo contiene datos, también puede contener la estructura e incluso la
categorización de la información dentro del mismo documento. ¡Con XML el
documento lleva documentación acerca de sí mismo!
Esto es posible porque en XML usted puede definir sus propias etiquetas.
Esto es lo que le hace mucho mejor que HTML, que sólo tiene unas pocas etiquetas
para presentación. ¡En cambio, XML sirve para mucho más que para presentación!
Creando etiquetas nuevas en XML
Mientras usted siga las reglas, podrá crear fácilmente nuevas etiquetas XML.
Las etiquetas XML se asemejan a las que encontramos en HTML.
Aquí hay algunas etiquetas XML:
<book_title>XML PROGRAMMING WITH VB AND
ASP</book_title>
<author>Mark Wilson and Tracey Wilson</author>
<publisher>Manning Publications</publisher>
<copydate>2000</copydate>
<retailprice>$1,000,000</retailprice>
<ISBN> 1884777872</ISBN>
¿Cuáles son las reglas de XML?
Hay diez reglas básicas en XML.
Echemos un vistazo a los objetivos establecidos por el W3C para XML:
XML será directamente utilizable en Internet.
XML soportará una amplia variedad de aplicaciones.
XML será compatible con SGML.
Será fácil escribir programas que procesan documentos
XML.
El número de características opcionales en XML debe mantenerse
en un mínimo absoluto, idealmente cero.
Los documentos XML deberán ser legibles por humanos
y resultar razonablemente claros.
El diseño de XML deberá ser preparado rápidamente.
El diseño de XML será formal y conciso.
Los documentos XML serán fáciles de crear.
El laconismo en las etiquetas XML es de importancia mínima.
Es importante subrayar aquí que esto es sólo el comienzo de la tecnología XML.
Apenas unos pocos sitios utilizan esta tecnología por la simple razón que muy pocos
navegadores la soportan.
Microsoft Internet Explorer 4.0, 5.0, 5.5 y el próximo 6.0 dan soporte a XML.
Netscape posee algún soporte para XML en Communicator/Navigator 6.0 y también
tiene soporte para RDF (Resource Description Format) para presentar lo que Netscape
llama "completa integración de la información en el escritorio."
RDF
RDF es una aplicación XML que se adecua a la perfección para el modelado de
datos. A través del soporte de Netscape y del Open Directory Project (http://www.dmoz.org)
RDF está siendo usado para catalogar Internet.
<BOOK>...<TITLE>XML programming for VB and ASP
developers</TITLE>...</BOOK>
Atributos
Los atributos son partes o propiedades de los elementos.
<BOOK TITLE="XML programming for VB and ASP
developers">...</BOOK>
Una similitud interesante entre atributos y elementos es que este elemento
BOOK (libro) contiene un atributo PUBLISHER (editor):
<BOOK PUBLISHER= "Manning">XMLprogramming for VB
and ASP developers</BOOK>< /p>< /p>< /p>
Recuerde que los atributos no pueden ser jerárquicos, es decir, no pueden contener
subelementos. Pero usted también podría cambiar el atributo por su propio elemento.
Entonces quedaría como:
<PUBLICATION>
<BOOK>XML
programming for VB and ASP developers</BOOK>
<PUBLISHER>Manning</PUBLISHER>
</PUBLICATION>
Entidades
Cualquier archivo o recurso web que puede estar "incluido" en un archivo XML
es una entidad. Las entidades se usan también para referirse a las representaciones
de caracteres especiales y las sustituciones de cadenas de texto e inclusiones.
El siguiente es un ejemplo del uso de entidades para sustituir cadenas de texto:
<!ENTITY BookName "XML programming for VB and ASP
developers">
Una vez puesto esto, puede usar la entidad &BookName; en el documento y
dondequiera que aparezca será sustituida por la cadena "XML programming for VB
and ASP developers". Esto es similar a utilizar una constante en VB.
Echemos un vistazo a algunos ejemplos de programación con XML.
Creando los objetos XML
Para desarrolladores ASP, utilice la siguiente sintaxis para crear un objeto
del tipo DOMDocument. Es la misma sintaxis CreateObject que para
crear los demás objetos.
<%
Dim xmlDoc Set xmlDoc =
CreateObject("Microsoft.XMLDOM")
%>
Un programador VB puede usar el código CreateObject citado anteriormente,
o puede añadir una referencia en el proyecto a "Microsoft XML, v3.0", en ese
caso puede utilizar:
Dim xmlDoc As New DOMDocument
Cómo obtener los objetos Microsoft XML
Para usar estos ejemplos de código que hacen referencia a los objetos Microsoft
XML (como DOMDocument), primero tiene que añadir una referencia en su proyecto a
"Microsoft XML, v3.0", naturalmente usted debe tener estos objetos instalados
previamente en su ordenador de desarrollo y en el sistema de producción, donde va
a instalar la solución.
Hay dos formas sencillas para instalar los objetos Microsoft XML en sus sistemas.
Puede tener IE5/5.5 (o el próximo 6.0) instalado, o puede extender IE4 con el
redistribuible XML que puede bajar del sitio web de Microsoft.
Esto es un ejemplo de cómo puede llenar un cuadro combinado cargando el contenido de un archivo XML.
Private Sub cmdRefresh_Click()
Dim xmlCustomers As MSXML.DOMDocument
Dim xmlNode As MSXML.IXMLDOMNode
lstCustomers.Clear 'Llamamos a una
DLL que nos devolverá los datos como DOMDocument Set xmlCustomers =
objCustomer.GetCustomerList()
For Each xmlNode In xmlCustomers.documentElement.childNodes
lstCustomers.AddItem xmlNode.childNodes(1).firstChild.nodeValue& "_
" &xmlNode.childNodes(2).firstChild.nodeValue lstCustomers.ItemData(lstCustomers.NewIndex) =_
xmlNode.childNodes(0).firstChild.nodeValue
Next xmlNode
End Sub
La forma más simple de depurar es acceder a la propiedad "xml" de DOMDocument
(por ejemplo: xmlDoc.xml) y ver si se ha logrado cargar el documento. Si esta
propiedad no contiene nada es que hubo un error al cargar, en ese caso puede
acceder al objeto parseError para encontrar el último error:
Una de las cosas interesantes acerca del objeto XMLHTTP es la
posibilidad de situar datos XML en un servidor de HTTP o recuperar XML de un servidor HTTP.
ésta es una manera sencilla de lograr la independencia del servidor
porque a un programa no le importa qué tipo de servidor HTTP es con el que está
hablando, o qué sistema operativo corre dicho servidor. Todo lo que el servidor HTTP
necesita es tener la capacidad de recibir llamadas HTTP como POST o GET y pasar la
llamada a algún tipo de programa (ASP, CGI, servlets de Java, etc.)
Así, puede considerar la combinación de XML vía llamadas HTTP como
un tipo de middleware o pegamento para relacionar distintos sistemas.
Vamos a ver un ejemplo en el que vamos a abrir una conexión con un servidor
web (Personal Web Server 1.0a) y llamar a un archivo ASP que nos dará una respuesta.
Para hacer la conexión, haremos uso de un objeto que se suministra con IE5 y
que se llama XMLHTTP. Básicamente vamos a abrir una conexión "POST" con el
servidor web (¡que es lo que todo navegador web hace!) y entonces,
usando esta conexión, "hablaremos" con el archivo demo.asp que nos devolverá
una lista en formato XML.
En la parte VB de este ejemplo, el código que se utiliza para conectarse
con el servidor web es:
'Creamos los objetos
Dim xmlHttp As new XMLHTTPRequest
Dim xmlDoc As DOMDocument
'Abrimos la conexión POST (o GET) con el servidor web
xmlHttp.Open "POST", "http://localhost/xmlcode/demo.asp", False
'Establecemos la conexión
xmlHttp.Send
'Recibimos la respuesta
'Hay diferentes tipos de respuesta (binario, texto, etc.)
Set xmlDoc =
xmlHttp.responseXML
En el lado del servidor web usaremos código ASP en el archivo demo.asp
que está siendo llamado. Debemos asegurarnos que el código del lado servidor
establezca ContentType como "text/xml" y que devuelva un documento XML:
<%
'Declaramos un objeto variant
Dim xmlDoc
'Colocamos un DOMDocument en xmlDoc Set xmlDoc =
Server.CreateObject("MSXML.DOMDocument")
'Cargamos el documento XML
xmlDoc.load Server.MapPath("people.xml")
'Establecemos el tipo como XML Response.contenttype =
"text/xml"
'Enviamos de vuelta el DOMDocument que hemos cargado
response.write xmlDoc
%>
Ahora tiene una sencilla aplicación VB que se comunica con una página
ASP en un servidor web y acepta un DOMDocument como una respuesta.
Si utiliza a ADO 2.1, entonces puede guardar un recordset en
un archivo XML usando el método Save del objeto recordset ADO.
El método Save acepta dos argumentos, FileName y PersistFormat.
El truco está en el parámetro PersistFormat, que acepta los valores "adPersistADTG"
para formato binario y "adPersistXML" para formato XML.
Utilice este código VB grabar un recordset ADO en XML:
Private Sub cmdSaveAdoFile_Click()
Dim People As ADODB.Recordset
Dim ObjConn As New ADODB.Connection
'Abrimos una conexión ODBC con la BBDD
ObjConn.Open "VBXML"
'Ejecutamos una SELECT contra la BBDD
Set People = ObjConn.Execute("select * from People")
'Guardamos el recordset como un archivo XML
People.Save "c:\adodemo.xml", adPersistXML
End Sub
Para cargar ese fichero XML de vuelta en un recordset ADO, puede usar el
siguiente código:
Private Sub cmdLoadAdoFile_Click()
Dim People As ADODB.Recordset
Set People = New ADODB.Recordset
'Abrimos el archivo XML y lo cargamos
People.Open "c:\adodemo.xml", "Provider=MSPersist"
'Mostramos en una ventana de mensaje emergente el número de registros
MsgBox People.RecordCount
End Sub
Y eso es todo lo que necesita hacer. Ahora sabe cómo grabar y cargar
un recordset a partir de un archivo XML en unas pocas líneas de código.
Ahora usted se encuentra encaminado para entender XML y trabajar con él. Siga
profundizando con los ejemplos que encontrará en las diferentes secciones.