XML Flashcards
XML añade restricciones a SGML
- Todas las etiquetas llevan cierre
- Los valores de los atributos deben ir entre ‘ ‘ ó “ “
- Case-sensitive
XML bien formado
- Solo existe un único elemento raíz
- Todos los elementos se encuentran anidados y correctamente cerrados
- Los valores de atributos deben ir entre comillas simples o dobles
- Los elementos vacíos deben terminar con ‘/’ (autocierre) o añadiendo etiqueta de fin
- Los nombres de las etiquetas pueden ser alfanuméricos pero siempre empezando con una letra
XML válido
Cumple las reglas de la gramática especificadas en el DTD/XSD
DTD
Document Type Definition
Menos flexible en definición de tipos de datos, restricciones, etc
DTD no especifica tipo de datos
XSD
Schema Definition
Permite definir restricciones a los posibles valores de los tipos de datos y se pueden establecer en diferentes aspectos, llamadas facetas: xs:length | xs:pattern,…
Transformaciones XSL
XSL obsoleto
Con XSLT y un Processor (ej: Apache Xalan) podemos fusionar un XML con un XSL y da como resultado otro documento de marcas.
Con XSL-FO (Formating Object), el resultado de fusionar un XML con un XSLFO (ej: Apache FOP) sería un entregable (PDF, imagen,..)
API’s de programación
- DOM
- SAX
- JAXB
-XPath
DOM
Estándar W3C. No se usa ya.
Apache Xerces
El parser genera del XML un árbol de objetos en memoria que podremos modificar añadiendo nuevos modos, eliminando o modificando
Libertad para recorrer el árbol pero tiene la desventaja de ocupar mucha memoria si el XML es grande
Todos los nodos son de tipo/interface Node
Con el API Trax
SAX
Del mundo Java.
Más complejo de desarrollar.
Apache Xerces.
El parser empieza a leer el XML y le envía a una clase que se ha definido previamente los distintos eventos que detecta.
Funciona forward-only.
SAXParser es el parser SAX de Java
JAXB
Similar al API del DOM pero genera objetos de tus clases de negocio.
El parser genera, del elemento XML, un árbol de objetos en memoria, pero al contrario que el DOM estos objetos serán de clases de tu modelo de dominio
Con la utilidad xjc de la JDK podemos generar esas clases automáticamente a partir de un XSD.
Hay una variante de JAXB llamada StAX que en lugar de levantar todo el árbol de objetos lo puede controlar el programador e ir leyendo bajo demanda.
Procesos:
-UNMARSHAL: leer el XML y levantar el árbol de objetos de negocio en memoria (≈Deserializar)
-MARSHAL: llevar el árbol de objetos de negocio a su XML correspondiente (≈Serializar)
XPath
XML Path Language.
Estándar W3C.
Para seleccionar nodos de un XML
Lenguajes de marcado ligeros
Basados en una sintaxis más ligera que XML y suelen usarse para generar documentación (como GitHub).
Ej: Markdown y RestructuredText
JSON
JavaScript Object Notation.
Estándar ECMA 404
Tipo MIME: application/json
Lenguaje Schema-less
Tipos de datos: Object, Array, Number, String, true, false y null
Basado en atributo-valor
Todos los atributos van siempre entre comillas
Uso importante en ámbito de seguridad, para autenticación web (JWT)
Librerías para procesado JSON
Jackson y GSON (google)
API’s programación JSON
JSON-B (alto nivel) y JSON-P (bajo nivel)