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?
Cómo debe empezar una etiqueta?
Cómo van los nombres de los atributos y su valores?

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 nombres de los atributos no
* 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 o guion bajo _ o dos puntos :
* 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

En JSON
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 que se usa para crear una restricción.
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, a un HTML o a texto plano
la extensión es .xsl

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

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?
para qué sirve xjc?

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

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

Echar un vistazo a la sintaxis de yaml
- Cómo empezar los documentos yaml

Los anidamientos se hacen …
Los comentarios se preceden de …
¿hay que entrecomillar los nombres de los campos?
Los valores strings hace falta entrecomillarlos?. Si son strings si se quiere que se interpreten los caracteres escapados, como se hace?
Cómo se terminan las líneas?
Si se quiere poner un string en varias líneas, iniciar el bloque con…
Si se empieza el bloque con | , cómo interpretará el string ?
Para poner null, se puede poner la palabra null o…
Los booleanos se pueden poner como …
Para crear un array, los valores además de tener que ir indentados/anidados bajo el array, deben comenzar por…

A

https://www.cloudbees.com/blog/yaml-tutorial-everything-you-need-get-started

  • Los documentos empienzan por tres guiones: —
  • Los anidamientos se hacen indentando con espacios, pero no con tabuladores
  • Los comentarios se preceden de #
  • No hay que entrecomillar los nombres de los campos
  • Los valores tampoco hace falta entrecomillarlos aunque sean strings. Si son strings se puede poner comillas dobles si se quiere que se interpreten los caracteres escapados
  • No hace falta poner ; para terminar la linea, no se pone nada, sólo salto de línea
  • Si se quiere poner un string en varias líneas, iniciar el bloque con >. Si se empieza el bloque con | interpretará el string conservando los saltos de línea
  • Para poner null, se puede poner la palabra null o la virulilla ~
  • Los booleanos se pueden poner como True, False, On, Off, Yes, No
  • Para crear un array, los valores además de tener que ir indentados/anidados bajo el array, deben comenzar por un guión -
37
Q

Por qué caracteres puede empezar un element de XML, y qué caracteres puede tener entre medias?

A
38
Q

Qué es XQuery

A

XQuery es un lenguaje de consulta diseñado para extraer y manipular datos de documentos XML. A diferencia de SQL, que se utiliza para consultar bases de datos relacionales, XQuery se centra en trabajar con documentos XML y estructuras jerárquicas de datos. XQuery permite realizar consultas complejas y avanzadas en documentos XML y, al igual que SQL, tiene una sintaxis específica para expresar las consultas.

Aquí tienes un ejemplo básico de XQuery que demuestra cómo se puede usar para extraer información de un documento XML simple:

Supongamos que tienes el siguiente documento XML que describe libros:

```xml

<libreria>
<libro>
<titulo>El Gran Gatsby</titulo>
<autor>F. Scott Fitzgerald</autor>
<anio>1925</anio>
</libro>
<libro>
<titulo>Cien Años de Soledad</titulo>
<autor>Gabriel García Márquez</autor>
<anio>1967</anio>
</libro>
</libreria>

Aquí hay un ejemplo de una consulta XQuery que extraería los títulos de los libros escritos después de 1950:

```xquery
for $libro in //libro
where $libro/anio > 1950
return $libro/titulo

En este ejemplo:

  • La cláusula for $libro in //libro establece un bucle que recorre todos los elementos <libro> en el documento XML.
  • La cláusula where $libro/anio > 1950 filtra los libros cuyo año es posterior a 1950.
  • La cláusula return $libro/titulo devuelve los elementos <titulo> de los libros que cumplen con el filtro.

La salida sería:

Cien Años de Soledad

Este es un ejemplo muy básico de cómo XQuery puede usarse para consultar datos XML. XQuery es capaz de realizar consultas mucho más complejas y puede involucrar múltiples condiciones y operaciones para extraer, transformar y filtrar datos de documentos XML de manera eficiente y efectiva.