b3t8 - XML Flashcards

1
Q

XML es un lenguaje case sensitive?

A

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Qué significa que un XML esté bien formado?

A

XML Bien Formado:
* Sólo 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 una etiqueta
de fin.
* Los nombres de las etiquetas pueden ser alfanuméricos, pero siempre
comenzando con una letra
* XML es case sensitive en los nombres de las etiquetas, por tanto la apertura y cierre han de ser iguales al respecto
* Un nodo puede tener dentro varios elementos que pueden ser textos u otros nodos (ver imagen, que sería correcta)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Qué significa que un XML sea válido?

A

Cumple las reglas de la gramática especificadas en el DTD / XSD

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Cómo se tiene que declarar un XML? (etiqueta de inicio del XML)

A

< ?xml versión=“1.0” encoding=“utf-8” standalone=“no”?>

Fijarse que empieza y termina por interrogación
La versión es obligatoria, pero el encoding no
Standalone no significa que la gramática está en otro fichero, por tanto no es independiente

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Cómo se enlaza por ejemplo un DTD en un XML para validar su gramática¿?

A

< !DOCTYPE empleados SYSTEM “empleados.dtd”>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Qué es el & amp; de la imagen. O podría ser un & lt;

A

Son entities o macros, que sirven para no confundir al analizador XML

Se sustituye al analizar el XML por su caracter, para “escapar”

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Cómo se hace en XML para poner un texto que no se interprete por el parser de XML?

A

< ![CDATA[texto que el parser no analiza]]>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Qué son los espacios de nombre en XML y cómo se definen?

A

Tenemos la posibilidad de incluir en las etiquetas unos prefijos que nos permitan
eliminar la posible ambigüedad que pudiera darse con dos etiquetas con el mismo
nombre
* Los DTD no dan soporte a los espacios de nombres

Fijarse que se pone en la etiqueta root

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Cómo se hace un DTD para definir la gramática de un DTD?

Cómo empieza el documento y dónde se pone el elemento raíz
Cómo indicar que un elemento tiene determinados hijos ( pudiendo usar and o or, indicando el número de elementos…
Cómo indicar que un elemento tendrá texto
Cómo indicar los atributos que tendrá un elemento, tanto de forma obligatoria como opcional

A
    • Otros tipos de contenido para un ELEMENT serían ANY (mixto) o EMPTY, o FIXED para un valor fijo
  • Otros tipos de atributos son ID e IDREF (similar al concepto de clave primaria y ajena)
  • REQUIRED para obligatorio y IMPLIED para opcional
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Dos lenguajes de marcas ligeros

A

Se basan en una sintaxis menos compleja que XML y suelen utilizarse para generar documentación. Ejemplos: Markdown (.md) y RestructuredText (.rst)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Casos de uso de YAML

A
  • Definir api rest en formato openApi
  • Definir un playbook de Ansible
  • Docker Compose
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Qué significa que JSON sea schemaless?

A

Que no requiere de validación con un esquema con la gramática, como XML

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Cuál es el estándar de JSON? y el mimetipe?

A

ECMA 404
application/json

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Qué tipo de datos tiene JSON?

A

Object , Array, Number, String, true, false y null

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Entrecomillado ->
Cómo son las comillas cuando se ponen?
Cómo van el nombre de los atributos del par atributo:valor?
En qué tipos de datos se entrecomilla su valor y cuáles no?
Cómo se separan los decimales en un number?

A

Comillas dobles
atributo Siempre entre dobles comillas
Se entrecomilla el valor de: Strings
No se entrecomilla el valor de: Number, Booleanos y null
Los numéricos decimales se separan con punto, no coma

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Qué dos librerías se usan para procesar JSON?

A

Jackson y GSON

17
Q

Dos APIs de programación de JSON

A

JSON-P y JSON-B (como json-p, pero de más alto nivel)

18
Q

Refrescar cómo son los JWT, típico caso de uso de JSON

A
19
Q

Cómo se enlaza un XSD en un XML?

A

< aeropuerto xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xsi:noNamespaceSchemaLocation=”aeropuerto.xsd”>

Fijarse en que hay que dar de alta ese espacio de nombres
Luego en el otro xsi se pone el xsd a importar

20
Q

Cómo empieza un XSD?

A

< ?xml version=”1.0” encoding=”UTF-8”?>
< xs:schema xmlns:xs=”http://www.w3.org/2001/XMLSchema”>

Fijarse en que al ser un XML también, se inicia como un xml, con la “?”, la versión, etc

21
Q

Analizar un ejemplo de XSD
Y leer los apuntes de XSD en pdf que está en el laboratorio, pasando de la parte de qualified. Importante las restricciones

A

Fijarse en el uso de complexType y de simpleType -> Simple solo puede tener un dato
Fijarse en que se pone all, para indicar que no tienen un orden específico, se podría poner sequence para obligar al orden. Choice sería para indicar que sólo se puede poner uno de los hijos.
Se usa minOcurrs y maxOcurrs para indicar nº, en lugar de asterisco, + , ? como en DTD
Se puede usar tipo time para validar fechas
Como en DTD se puede especificar que un atributo es ID
El uso de restriction y pattern para hacer que un atributo cumpla una expresión regular

22
Q

Restricciones o facetas XSD

A
23
Q

Ejemplo de usar extensiones en XSD

A

Fijarse en la sintaxis, que es con extension
Fijarse que además de heredar atributos con la extensión, se está añadiendo otro

24
Q

Qué es XSLT?

A

Lenguaje que vale para transformar un XML a otro XML o a otros formatos

25
Q

Qué es es un Processor de XML? Ej producto

A

A partir de un XML y una hoja XSLT, es el que procesa las instrucciones XSLT sobre ese XML para generar el documento resultante
Ej: Apache Xalan

Apache FOP, por el contrario, usa XSLFO, que lo que hace es fusionar un XML con un XSL para generar un pdf, imagen, etc…

26
Q

Qué es Apache Xerces¿

A

Es una libería que vale para parsear, validar y manipular XML, que soporta muchas APIS como DOM y SAX

27
Q

Ver equivalencias de cómo se selecciona información con XPath

A
28
Q

Qué es XHTML?

A

Es un HTML que cumple las reglas de un XML válido
XHTML estaba basado en la reglas de XML (ej <br></br> no es valido). Tipo MIME = application/xhtml+xml

29
Q

HTML4 o HTML5 es XHTML? es decir, cumple las reglas de un XML bien formado?

A

No, por ejemplo no son case sensitive como XML, y etiquetas como < br> no son válidas porque no tienen cierre

30
Q

Qué es StAX?

A

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 por “trozos”

31
Q

Previamente a hacer un unmarshall de un XML, qué debemos hacer para generar las clases?

A

Con xjc se puede usar un XSD (grámática) para generar las clases, si no se tienen.
Luego el unmarshall con JAXB ya generará los objetos de esas clases a partir del XML

32
Q

En XPath, qué significa…
//elemento
/elemento
elemento[@atributo]

A

//elemento -> busca el/los elementos a cualquier profundidad
/elemento -> busca el elemento en la raiz
elemento[@atributo] -> elementos que tengan ese atributo

33
Q

En XPath, cómo se conseguiría

  • Obtener algo aplicando una condición
  • Obtener algo que sea la unión de dos cosas
  • Obtener elementos
  • Obtener atributos
  • Obtener el valor sin la etiqueta
  • Fución para obtener Nodos descendientes del actual
A
  • Obtener algo aplicando una condición -> Con corchetes elemento[condicion]. Si se pone un número, es el elemento en esa posición de un conjunto de elementos -> /gimnasio/monitores/monitor[3]/nombre. Si no se pone nada más que un nombre de elemento o de atributo, significa que la condición es que lo tengan -> /gimnasio/actividades/actividad[lugar]/nombre
  • Obtener algo que sea la unión de dos cosas -> con | dentro de paréntesis -> /gimnasio//(actividad | monitor)/nombre
  • Obtener elementos -> // o /
  • Obtener atributos -> @ -> /gimnasio/actividades/actividad/@código
  • Obtener el valor sin la etiqueta -> text() -> /gimnasio/actividades/actividad/ text
  • Función para obtener Nodos descendientes del actual -> node()
34
Q

Leer los pdf de laboratorios XPath

A
35
Q

Cuál es la principal diferencia entre JaxB y Stax?

A

StaX no guarda todos los objetos en memoria

36
Q

Hay varias maneras de analizar XMLs, se usan varias APIs
DOM
SAX (es de java)
JAXB (es de java)

En qué consiste cada una?
Qué es marshall y unmarshall?

A

SAX (Simple Api for XML)-> El Parser comienza a leer el documento y le envía a una clase
que se ha definido previamente los distintos eventos que
detecta (inicio del documento, inicio de etiqueta, …)
Funciona forward-only, no tenemos posibilidad de ningún
recorrido pero es el más rápido de todos los métodos.

DOM (Document Object Model) -> El Parser genera del documento XML un árbol de objetos en
memoria
que podremos modificar añadiendo nuevos nodos,
eliminando o modificando.
También tendremos libertad absoluta para recorrer dicho
árbol pero tiene la desventaja de que puede llegar a ocupar
mucha memoría si el XML es grande.
Todos los nodos son de tipo/interface Node pero también
tenemos unas especializaciones de Node como son: Element,
Attr, Text y Document

JAXB (Java Architecture for XML Binding) -> El Parser genera del documento XML un árbol de objetos en memoria, pero al contrario que el DOM, estos objetos serán
de clases de tu modelo de dominio de negocio (Ej. Factura, Empleado,
etc).
Este proceso se llama unmarshal y el contrario, a partir del árbol de objetos de negocio a XML se llama marshall
Con la utilidad xjc de la JDK somos capaces de generar esas
clases automáticamente a partir de un XSD