
¡Hola y bienvenido a este curso de XML! En este curso veremos desde lo más básico hasta un nivel profesional de XML. No solo lo trataremos a nivel teorico, sino que realizaremos ejercicios según vayamos avanzando. A parte de esto, he querido incluir una práctica para que puedas afianzar el conocimiento de manera adecuada.
Espero que disfrutes el curso tanto como yo he disfrutado hacerlo.
Un saludo
Email: víctor.develops@gmail.com
|---------------< NetBeans >--------------|
NetBeans es un IDE pensado para trabajar con JAVA principalmente. Su funcionalidad se puede ampliar con un importante número de módulos, además de ser completamente gratuito y libre.
Nosotros usaremos Netbeans por su validador de ficheros. También podemos usar otros IDE, como Visual Studio Code, pero este es el que mejor funciona a mi juicio y es el que yo usaré a lo largo del curso. De modo que procedamos con su instalación en Windows.
|---------------< PASO 1: descargar NetBeans >---------------|
Para ello, accedemos a "https://netbeans.org" y hacemos clic en descargar la última versión. En la página que se nos abrirá buscamos la opción que dice "binaries" y hacemos clic (en la que termina en .zip). Ahora, en la siguiente página, selecciona cualquiera de los enlaces en la sección de HTTP o en la opción que nos recomienda la propia página. Me parece que la diferencia de cada enlace es la ubicación del servidor. Finalmente, debería de comenzar la descarga de un zip.
|---------------< Paso 2: descomprimir y usar NetBeans en Windows >----------------|
Descomprime la carpeta y navega a su interior. Haz clic en netbeans y luego en bin. Allí encontrarás dos archivos exe: netbeans.exe (32bits) y netbeans64.exe (64 bits). Según de qué tipo sea tu equipo, selecciona uno u otro.
Una vez hecho todo esto, tendremos NetBeans listo para usarlo con ficheros XML.
¡Un Saludo!
|---------------< ¿Qué es XML? >---------------|
XML es una herramienta de almacenamiento y transporte de datos. Sus siglas significan "eXtensible Markup Lenguage" y es un lenguaje de marcado muy parecido a HTML, debido a que ambos derivan de SGML.
|---------------< ¿Qué hace XML? >---------------|
Quizá resulte un poco difícil de entender pero XML no hace nada. Sirve como medio para enviar y recibir información pero no hace nada en sí. Tan solo almacena información, que será interpretada por un programa.
Sin embargo, puede ayudarnos a simplificar la creación de documentos HTML para una página web, intercambiar información entre sistemas, puede usarse como una base de datos, definir otros lenguajes...
|---------------< ¿Cuáles son las diferencias entre HTML y XML? >---------------|
Aunque son muy similares, tienen puntos diferentes. XML fue diseñado para enfocarse en los datos mientras que HTML se centra más en colocar los datos, es decir, a un XML no le importa la manera en que se visualizan sus datos (no obstante, existen formas de formatear un XML. Mediante un CSS, por ejemplo).
Su principal diferencia con HTML es que es extensible, por lo cual el programador puede definir sus propias etiquetas y atributos.
Otra diferencia es que XML no tiene etiquetas predefinidas, como sí las tiene HTML.
Es case sensitive, es decir, diferencia entre mayúsculas y minúsculas.
|---------------< ¿Qué aspecto tiene un XML? >---------------|
<?xml version="1.0" encoding="UTF-8"?>
<tutoriales>
<tutorial>
<nombre>XML Y SUS TECNOLOGÍAS</nombre>
<url>https://www.udemy.com</url>
</tutorial>
<tutorial>
<nombre>HTML Tutorial</nombre>
<url>https://www.udemy.com</url>
</tutorial>
</tutoriales>
|---------------< Árboles XML >----------------|
Los documentos XML se componen de texto plano y etiquetas definidas por el desarrollador. Estas etiquetas se anidan en una estructura de árbol, la cual comienza con un único elemento raíz del que nacen las ramas. Si nos ubicamos en un elemento, el elemento por encima de este es el elemento padre (parent), mientras que los elementos inferiores son los elementos hijo(child). Los elementos en su mismo nivel son los hermanos (sibling).
|---------------< Estructura de un XML >---------------|
Comienza con una declaración que indica que ese fichero es un XML.
<?xml version="1.0" encoding="UTF-8"?>
Instrucciones de procesamiento. Indicarán cierta información al programa que procese el documento. Son optativas.
<?xml-stylesheet type="text/css" href="estilo-libreria.css"?>
Sigue con el elemento raíz.
<libreria>
Luego las ramas con sus hijos.
<libro>
========================================================================================
Recuerda: se dice que un documento XML está bien formado cuando no tiene errores de sintaxis. Un documento XML es válido cuando, además de no tener errores de sintaxis, no incumple ninguna de las normas establecidas en su estructura (DTD, XML Schema, RELAX NG...).
========================================================================================
|---------------< Etiquetas >---------------|
Raíz. Se ubica por encima de cualquier elemento, y sirve como punto de partida para recorrer el árbol y ubicar el resto de nodos. Básicamente, es el elemento que contiene al resto de elementos.
Elementos. Es la unidad básica de un XML. Se identifica por la etiqueta de apertura y de cierre. En su interior contiene información, otros elementos o puede estar vacía.
<tag>ejemplo1234</tag>
<tag_vacia/>
Atributos. Son similares los atributos HTML. Permiten almacenar datos adicionales a cerca de un elemento.
<tag atributo="ejemplo"/>
Texto. Puedes incluirlo en el interior de un elemento o de un atributo. No puedes incluirlo en otro lugar, y los espacios reciben un tratamiento especial:
Tabulador \t 	 TAB
Nueva Línea \n 
 LF
Espacio \s   Barra Espaciadora
Comentarios. Empiezan por <!-- y se cierran con --> . Dentro puedes escribir cualquier cosa excepto --, y puedes colocarlo en cualquier parte del documento, excepto dentro de una etiqueta o antes de la declaración del documento (<?xml ... ?>).
<!-- Esto es un comentario XML -->
Entidades Predefinidas. Son caracteres reservados de XML. Si deseas usarlos para que sean interpretados como texto, deberás escaparlos de la siguiente manera:
& &
< <
> >
' '
" "
Secciones CDATA. Conjuntos de caracteres que el procesador no analiza. No pueden aparecer antes del elemento raíz, ni después de su cierre, y no pueden contener el propio signo delimitador de final de sección CDATA (]]>).
EJ:
<codigo>
<![CDATA[<script>alert("Esto es un fragmento CDATA");</script>]]>
</codigo>
Ha llegado la hora de comenzar con la segunda parte del curso. Empezaré explicándote qué es un fichero DTD y para qué se utiliza. Veremos la estructura de los ficheros DTD, su sintaxis y los elementos de los que se compone. Todo ello con ejercicios específicos para que puedas practicar.
Al fina os planteo unas cuestiones que combinan todo lo aprendido. Son optativos, pero te recomiendo encarecidamente que los hagas ¡También tendrás una práctica de final en la que generarás tu propio DTD que valide un XML del tema que escojas!
Te dejo algunas lecturas auxiliares. No es necesario leerlas para comprender nada, pero quizá te ayuden a avanzar más rápido =)
¡Un saludo!
|---------------< ¿Qué es un DTD? >---------------|
"Una definición de tipo de documento o DTD ( document type definition) es una descripción de estructura y sintaxis de un documento XML o SGML. Su función básica es la descripción de la estructura de datos, para usar una estructura común y mantener la consistencia entre todos los documentos que utilicen la misma DTD. De esta forma, dichos documentos pueden ser validados, conocen la estructura de los elementos y la descripción de los datos que trae consigo cada documento."
Dicho con mayor sencillez, un DTD es una definición de tipo de documento. Permite definir la estructura y los elementos y atributos permitidos para un documento XML.
|---------------< ¿Qué hace un DTD? >---------------|
Como se puede deducir de lo anterior, un DTD contiene las reglas de estructura y sintaxis de un fichero XML. Así pues, sirve para comprobar si un fichero XML es válido o no. Según esto, podemos afirmar que con un DTD, grupos independientes de personas pueden acordar un DTD estándar para intercambiar datos. También podemos decir que una aplicación podría usar un DTD para verificar que sus datos almacenados en XML son válidos.
|---------------< ¿Qué aspecto tiene un DTD? >---------------|
<!ELEMENT lista_de_personas (persona*)>
<!ELEMENT persona (nombre, fechanacimiento?, sexo?, numeroseguridadsocial?)>
<!ELEMENT nombre (#PCDATA) >
<!ELEMENT fechanacimiento (#PCDATA) >
<!ELEMENT sexo (#PCDATA) >
<!ELEMENT numeroseguridadsocial (#PCDATA)>
Declarar Elementos: En un DTD, los elementos XML se declaran empleando la siguiente sintaxis: <!ELEMENT element-name category> o <!ELEMENT element-name (element-content)>
Elementos Vacíos: Los elementos vacíos se declaran usando la palabra clave EMPTY: <!ELEMENT element-name EMPTY>
Elementos solo con PCDATA: Los elementos que solo tienen PCDATA se declaran poniendo #PCDATA entre paréntesis: <!ELEMENT element-name (#PCDATA)>
Elementos con cualquier contenido: Los elementos declarados con la palabra clave ANY pueden contener cualquier combinación de datos analizables: <!ELEMENT element-name ANY>
Secuencias de Elementos: Los elementos que contengan uno o más elementos en su interior se declaran con el nombre de los subelementos dentro de un paréntesis, de la siguiente manera: <!ELEMENT element-name (child1,child2,...)>. Cuando se declara una secuencia de elementos separados por comas, los elementos deberán aparecer en el mismo orden en el XML.
Ocurrencias Mínimas: Para indicar que un elemento debe aparecer al menos una vez, utilizamos el signo "+" junto al elemento en cuestión: <!ELEMENT element-name (child-name+)>
Cero o más ocurrencias: Si el elemento puede aparecer desde cero hasta indeterminadas veces, lo pondremos utilizando el signo "*": <!ELEMENT element-name (child-name*)>
Cero o una ocurrencia: Si el elemento puede aparecer cero o una vez, emplearemos "?": <!ELEMENT element-name (child-name?)>
Contenido OR: Si ha de aparecer o un elemento u otro, pero no ambos, utilizaremos la siguiente sintaxis: <!ELEMENT note (to,from,header,(message|body))>
Contenido Mixto: Se pueden combinar todas las declaraciones que hemos expuesto más arriba, por ejemplo:
<!ELEMENT note (#PCDATA|to|from|header|message)*>
En este caso, el elemento "note" puede contener cero o más apariciones de los elementos entre paréntesis.
Declarar Atributos - La declaración básica de un atributo es la siguiente: <!ATTLIST element-name attribute-name attribute-type attribute-value>, por ejemplo tendríamos esto: <!ATTLIST payment type CDATA "check">
Atributo con valores predefinidos - <!ELEMENT square EMPTY><!ATTLIST square width CDATA "0"> En este caso, el elemento "square" se ha definido como vacío, con un atributo "width". En el caso de que no se añada dicho atributo, su valor por defecto será "0".
Atributos Obligatorios - Se utilizan para obligar a que el atributo esté siempre en el elemento. <!ATTLIST element-name attribute-name attribute-type #REQUIRED>
#IMPLIED - Se utiliza para indicar que no es necesario incluir ese atributo, y que no tiene valor por defecto. <!ATTLIST element-name attribute-name attribute-type #REQUIRED>
#FIXED - Se utiliza para obligar a que el valor de un atributo sea el indicado. Si es diferente, dará error. <!ATTLIST element-name attribute-name attribute-type #FIXED "value">
Enumeración de Valores - Se emplea cuando el valor de los atributos debe estar comprendido entre los que se ofrecen. Si no está en la lista, dará error. <!ATTLIST element-name attribute-name (en1|en2|..) default-value>
En XML no hay reglas a cerca de cuándo guardarla información en atributos o en elementos hijo.
============================================================
<person genre="female">
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
============================================================
<person>
<genre>female</genre>
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
============================================================
En el primer ejemplo, "genre" es un atributo, mientras que en el segundo es una etiqueta; sin embargo, ambos guardan la misma información. En mi experiencia, es mejor almacenar los datos en etiquetas que en atributos por los siguientes motivos:
Los atributos no pueden contener valores múltiples, mientras que las etiquetas sí pueden.
Los atributos no son fácilmente ampliables para futuros cambios.
Los atributos no pueden describir estructuras mientras que los elementos hijos sí pueden.
Los atributos son más difíciles de manipular para un código de programa.
Los atributos no son fáciles de testar.
Pese a todo esto, sí recomiendo usar atributos para elementos que necesiten algún tipo de ID o identificador.
Las entidades se crean para tener shortcuts (atajos) para llamar a cadenas (es como una especie de constante), y se pueden declarar tanto externa como internamente.
sintaxis: <!ENTITY entity-name "entity-value">
DECLARACIÓN INTERNA
ejemplo:
DTD
<!ENTITY writer "Donald Duck.">
<!ENTITY copyright "Copyright W3Schools.">
XML
<author>&writer;©right;</author>
Para llamar a una entidad, hay que empezar con un "&", seguido del nombre de la entidad y terminando con ";".
DECLARACIÓN EXTERNA
DTD
<!ENTITY writer SYSTEM "https://www.w3schools.com/entities.dtd">
<!ENTITY copyright SYSTEM "https://www.w3schools.com/entities.dtd">
XML
<author>&writer;©right;</author>
"En la DTD de un documento XML, las notaciones se pueden utilizar para especificar el formato de entidades externas (datos no XML), como por ejemplo un archivo que contenga una imagen. Dichas entidades externas no las analizará un procesador XML, sino que serán tratadas por el programa que procese el documento."
Sintaxis notación privada:
<!NOTATION nombre-notacion SYSTEM "identificador-del-sistema>
Sintaxis notación pública:
<!NOTATION nombre-notación PUBLIC "identificador-publico">
<!NOTATION nombre-notacion PUBLIC "identificador-publico" "identificador-del-sistema">
En un DTD pueden existir elementos con atributos cuyo valor sea el nombre de una notación.
En esta clase instalaremos BaseX. Más adelante veremos un poco su funcionamiento y cómo utilizarlo para realizar consultas dentro de un fichero XML.
Página oficial de BaseX: http://www.basex.org
En esta clase explicaré cómo funcionan los nodos dentro de XPath. Para resumir:
XPath tiene siete tipos de Nodos: elementos, atributos, texto, namespace, instrucciones de procesado, comentarios y nodos de documento.
Como ya sabrás, un documento XML organiza sus diferentes elementos con una estructura de árbol. El elemento que contiene a todos los demás elementos se llama elemento raíz o root element.
Las relaciones entre los nodos pueden ser: parent, children, sibling, ancestor o descendants.
Cada elemento y atributo tiene un nodo padre o parent. El elemento padre es el que se encuentra en la capa superior del elemento en el que nos ubiquemos.
Los elementos pueden tener cero, uno o varios elementos hijos. El elemento hijo es aquél que se ubica dentro del elemento en el que nos encontramos.
Los nodos que tienen el mismo padre se llaman siblings. Son los elementos que están al mismo nivel de profundidad; los nodos hermanos.
El nodo ancestor es el nodo padre del nodo padre del nodo actual. Podríamos decir que es como el nodo "abuelo".
El nodo descendant es el nodo hijo del nodo hijo. Podríamos decir que es como el "nieto".
Resolución de los ejercicios avanzados de XPath.
Resuelvo los ejercicios de expresiones anidadas.
¡Bienvenido a XML Express! Este curso dinámico y completo te llevará de la mano hacia el emocionante mundo de XML. Si estás buscando una forma clara y concisa de dominar los fundamentos de XML, ¡has llegado al lugar indicado!
En XML Express aprenderás todo lo necesario para comprender y utilizar XML de manera efectiva. Desde los conceptos básicos hasta técnicas avanzadas, este curso te proporcionará las habilidades y conocimientos fundamentales para trabajar con este poderoso lenguaje de marcado.
Con explicaciones paso a paso y ejemplos prácticos, te sumergirás en la estructura y sintaxis de XML. Descubrirás cómo crear documentos XML válidos, definir etiquetas y atributos, y organizar datos de manera eficiente. Aprenderás a utilizar las herramientas y técnicas necesarias para validar y manipular documentos XML, así como para aplicar transformaciones y estilos con XSLT.
Además, XML Express se enfoca en ofrecerte una experiencia de aprendizaje atractiva y entretenida. Con recursos, ejercicios y quizzes, podrás poner en práctica tus conocimientos y afianzar tus habilidades en XML. No importa si eres un principiante completo o tienes conocimientos previos, este curso se adapta a tu nivel de experiencia y te lleva desde cero hasta el dominio de XML.
No pierdas más tiempo y únete a XML Express en Udemy para desbloquear todo el potencial de XML y abrirte las puertas a un mundo de posibilidades. Ya sea que desees mejorar tus habilidades como desarrollador web, trabajar con datos estructurados o adentrarte en el ámbito de la gestión de información, este curso es el punto de partida ideal.
Solo los que toman acción comienzan a prosperar y progresar en sus vidas. ¿A qué esperas para empezar a aprender?