En que lenguaje se basa XML
SGML
¿Qué es XML? ¿Conoces alguna etiqueta de XML?
Conjnto de reglas para construir lenguajes de etiquetas (html, svg, firma).
No se tienen etiquetas porque no es un lenguaje, son las reglas para crearlo.
Caracteristicas de XML Bien Formado
Caracteristicas de XML Válido
Declaración en un fichero XML
<!–- La declaración es opcional –>
<?xml versión=“1.0” encoding=“utf-8” standalone=“no”?>
<!–- Especificamos la gramatica .dtd –>
<!DOCTYPE empleados SYSTEM “empleados.dtd”>
<empleados>
.....
</empleados>
Escapar caracteres especiales en XML
Se pueden hacer con entities, hay que marcarlos con ‘&’ y el parser pondrá su caracter
Cuando queramos realizar un texto con caracteres especiales de un cierto tamaño tenemos la opción de decirle al parser que ignore el bloque de código
<observaciones>
<![CDATA[ texto que el parser no analiza (<> á | ) ]]>
</observaciones>¿Cómo declarar y usar name spaces en XML?
<root xmlns:h=“http://uri-a” xmlns:f=“http://uri-b”>
<h:tag1> … </h:tag1>
<f:tag1> … </f:tag1>
</root>Esquema y reglas de un DTD
Antiguos y poco flexibles
<?xml version="1.0" encoding="UTF-8” standalone=“yes”?>
<!DOCTYPE deportistas [
<!ELEMENT deportistas (futbol | f1 | tenis)*>
<!ELEMENT futbol (#PCDATA)>
<!ELEMENT f1 (#PCDATA)>
<!ATTLIST f1 pais CDATA "España">
<!ATTLIST f1 fecha_de_nacimiento CDATA #IMPLIED>
<!ATTLIST f1 equipo CDATA #REQUIRED>
<!ELEMENT tenis (#PCDATA)>
]>
<deportistas>
<f1 pais="Alemania" fecha_de_nacimiento="03/07/1987”
equipo="Ferrari">Sebastian Vettel</f1>
<f1 equipo="McLaren">Fernando Alonso</f1>
<tenis>Rafael Nadal</tenis>
</deportistas>Esquema y reglas de un XSD
Nuevos y flexibles
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="aeropuerto">
<xs:complexType>
<!–- Pueden aparecer en cualquier orden, contrario que usar sequence -->
<xs:all>
<xs:element name="nombre" type="xs:string"/>
<xs:element name="vuelos">
<xs:complexType>
<xs:sequence>
<xs:element name="vuelo" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="diario" minOccurs="0"/>
<xs:element name="origen" type="xs:string"/>
<xs:element name="destino" type="xs:string"/>
<xs:element name="hora-salida" type="xs:time"/>
<xs:element name="hora-llegada" type="xs:time"/>
</xs:sequence>
<xs:attribute name="código" type="xs:ID" use="required"/>
<xs:attribute name="estado" default="E">
<!-- Creamos tipo de dato a partir de un tipo base y añadiendo restricciones-->
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[CER]"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="fecha" type="xs:date"/>
</xs:all>
</xs:complexType>
</xs:element>
</xs:schema><?xml version="1.0" encoding="UTF-8"?> <aeropuerto xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="aeropuerto.xsd"> <nombre>JFK</nombre> <vuelos> <vuelo código="V22" estado="R"> <diario /> <origen>New York</origen> <destino>Chicago</destino> <hora-salida>09:30:00</hora-salida> <hora-llegada>11:30:00</hora-llegada> </vuelo> <vuelo código="V23" estado="C"> <origen>New York</origen> <destino>Miami</destino> <hora-salida>10:15:00</hora-salida> <hora-llegada>11:15:00</hora-llegada> </vuelo> </vuelos> <fecha>2013-12-20</fecha> </aeropuerto>
Herencia (extensiones) en una xsd. De elementos ya creados en esa xsd o propios del lenguaje
<xs:complexType name="infoPersonaAmpliada"> <xs:complexContent> <xs:extension base="infoPersona"> <xs:sequence> <xs:element name="ciudad" type="xs:string"/> <xs:element name="pais" type="xs:string"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name="infoPersona"> <xs:sequence> <xs:element name="nombre" type="xs:string"/> <xs:element name="edad" type="edadPersona"/> </xs:sequence> <xs:attribute name="numero" type="xs:integer"/> </xs:complexType> <xs:simpleType name="edadPersona"> <xs:restriction base="xs:integer"> <xs:minExclusive value="-1"/> <xs:maxExclusive value="131"/> </xs:restriction> </xs:simpleType>
Restricciones (facetas) en Elements de un xsd
Tipos de datos en xsd
Sequence, All, Choice y cardinalidades
¿Qué es XSL?
eXtensible Stylesheet Language
Cuando pasamos un parser con las directrices de la hoja XSL, el documento se trasnforma en otro documento, ya sea de etiquetas o con otra forma.
Lista de API’s XML en Java
API DOM en Java
XML — Parser DOM (Xerces) —- Árbol objetos en memoria
org.w3c.dom
API SAX en Java
braSAX -> Manda eventos al recorrer el árbol del xml y no nos da opción de movernos por el.
XML —Parser SAX (Xerces) —– flujo hacia clase java(listener)
org.xml.sax
API JAXB en Java
Trata xml a alto nivel
API StAX en Java
Permite junto con JAXB levantar solo as partes del XML que queremos, bajo demando.
¿Qué es XPath?
Estándar para “seleccionar” nodos de un XML llamado XPath (equivalente a los CSS Selectors)
En Java te obliga a construir el árbol DOM para usarlo.
¿Que es un fichero Markdown? ¿Y RestructureText?
Se basan en una sintaxis menos compleja que XML y suelen utilizarse para generar documentación. Ejemplos: Markdown (.md) y RestructuredText (.rst)
¿Qué es JSON?
¿Qué es YAML?
En el lenguaje XML, ¿cuál de las siguientes sentencias sería correcta para añadir comentarios?
a) <– Aquí va el comentario />
b) <Aquí></Aquí>
c) <!-- Aquí va el comentario -->
d) <! Aquí va el comentario —>
c) <!-- Aquí va el comentario -->