B3-T8 - XML Flashcards
Principios de XML
1 - Todas las etiquetas tienen cierre
2 - Los atributos deben ir entre comillas simples o dobles
3 - Es case Sensitive
Reglas de un XML bien formado
1 - Solo existe un elemento raid
2 - Todos los elementos se encuentran anidados y correctamente cerrados.
3 - Los valores de atributos deben ir entre comillas simples o dobles.
4 - Los elementos vacíos deben terminar con ‘/’ (autocierre) o añadiendo una etiqueta de fin. Empty element.
5 - Los nombres de las etiquetas pueden ser alfanuméricos, pero siempre comenzando con una letra
6 - Comentarios: <!–- La declaración es opcional –>
¿Qué representa esta etiqueta? <role></role>
Un Empty Element
El nombre de la etiqueta <1Tania> ¿Es correcto?
No, son alfanuméricos pero siempre empieza por una letra.
¿Cuándo decimos que un XML es válido?
Atiende a la gramática, cumple con ella.
Las reglas se definen en un DTD/XSD ANTIGUO/MODERNO
¿Un documento XML que cumple con la gramática es válido o está bien formado?
Es válido
Se han detectado varios errores en la exportación XML de los diferentes listados de notas y le solicitan su ayuda. Sin tener en cuenta si la información está bien resprestnada, ¿Cuál de los siguientes XML está bien formado?
La opción buena es la C)
Está jugando con meter datos en un Empty Element, pero realmente solo pregunta si está bien formado.
¿Estaría bien formado este documento? <Nota></nota></Nota>
La etiqueta está mal porque xml es casesensitive.
Busca errores
<!xml versión=“1.0” encoding=“utf-8” standalone=“no” !>
<?DOCTYPE empleados SYSTEM “empleados.dtd”>
<?xml ?>
<!DOCTYPE
¿Que significa standalone=“no”?
Que la gramática está independiente. Por lo que se necesita un documento de gramática para validar
<!DOCTYPE empleados SYSTEM “empleados.dtd”>
¿Que significa standalone=“yes”?
El documento contiene dentro la gramática, no es necesario un documento extra .dtd
¿Que es un entity?
Un texto que va a sustituir una vez leído por ejemplo & que se sustituye por el texto que representa, en este caso ampersan.
El ampersan es un carácter reservado, si la ponemos con el Entity no se confunden.
¿Que hace <![CDATA[texto que el parser no analiza]]>?
El texto que va dentro de CDATA no se interpreta, se escribe como tal.
Está bien escrita esta etiqueta < [CDATA[texto que el parser no analiza]>
No.
Falta <![CDATA
FALTA un corchete de cierre al final
<![CDATA[texto que el parser no analiza]]>
¿Qué es un NAMESPACE/XMLNS?
Para poder utilizar etiquetas con el mismo nombre de diferentes grupos.
<root xmlns:h=“http://uri-a” xmlns:f=“http://uri-b”>
<h:tag1> ... </h:tag1>
<f:tag1> ... </f:tag1>
¿Que representa el asterisco en esta etiqueta DTD?<!ELEMENT deportistas (futbol | f1 | tenis)*>
Cardinalidad. 0 o muchos.
Una etiqueta deportistas puede tener dentro una de las etiquetas definidas, 0 o muchas.
¿Que representa el + en esta etiqueta DTD?<!ELEMENT deportistas (futbol | f1 | tenis)+>
Uno o muchos (1-n)
¿Que identifica (#PCDATA)?
Determina que esa etiqueta llevará dentro texto.
Si tengo el siguiente DTD estaría bien formado el xml de f1
<?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” ></f1>
</deportistas>
No. Faltaría:
El atributo equipo que es obligatorio
<f1 pais=”Alemania” fecha_de_nacimiento=”03/07/1987” equipo=”Ferrari”></f1>
¿Qué quiere decir ANY en la siguiente etiqueta?
<!ELEMENT tenis (#ANY)>
Que al definirlo puede llevar texto o número dentro
<deportistas>
<tenis>Rafael Nadal</tenis>
<tenis>25</tenis>
<deportistas>
</deportistas></deportistas>
En el tipo-de-contenido se especifica el contenido permitido en el elemento, pudiendo ser:
- Texto, (#PCDATA).
- Otros elementos (hijos).
- Estar vacío, EMPTY.
- Mixto (texto y otros elementos), ANY.
Es correcto:
<!DOCTYPE elemento-raíz declaraciones >
No, sería
<!DOCTYPE elemento-raíz [ declaraciones ]>
¿Es correcta la declaración de tipo de documento?
<!DOCTYPE elemento-raíz PUBLIC “identificador-público” “URI”>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”>
Si
Los elementos (hijos) de un elemento (padre), deben escribirse en _________ en el que han sido declarados en la DTD.
el mismo orden
¿Puede un elemento vacío tener atributos?
Si
¿Cuáles son los operadores de carnalidad del xml?
- ? (interrogación): 0-1
- (asterisco): 0-n
- (signo más): 1-n
Para que se utiliza el operador de elección represando por la barra vertical |
Declarar elementos que contengan elementos opcionales.
<!ELEMENT deportistas (futbol | f1 | tenis)*>
Al utilizar el operador de elección (|) en una DTD, si una de las opciones es #PCDATA…..
esta debe escribirse en primer lugar.
¿Para que sirve ATTLIST en XML?
Para declarar atributos
<!ATTLIST nombre-del-elemento nombre-del-atributo tipo-de-atributo valor-del-atributo>
Corrige la siguiente declaración de atributo xml
<ATTLIST>
</ATTLIST>
<!ATTLIST f1 fecha_de_nacimiento CDATA #IMPLIED>
IMPLIED quiere decir…
atributo opcional
Los atributos ID y IDREF se asemejan a
clave primaria y ajena.
Usados con el GetElementebyid()
¿Qué es MARKDOWN?
Lenguaje de marcas para documentación. archivos (.MD)
¿Competidor de MARKDOWN?
RESTRUCTUREDTEXT (.RST)
¿Casos de uso de YAML?
- Swagger/OpenAPI para documentar una API’s rest
- Un Ansible playbook
- Sirve para definir los contenedores de Docker Compose
¿Que significa schema-less para JSON?
Schema-less(no tiene gramática, pero si bien formado
Si queremos añadir gramática a JSON usamos…
JSON schema
¿Cuál es el estándar de JSON?
ECMA 404
Si nos encontramos con un elemento de este tipo en un documento JSON decimos que es un:
“company”: “mycompany”{}
Un Objeto, si está entre llaves.
También puede ser array si hay llaves y corchetes { [
¿Cuándo se usan las dobles comillas en JSON?
Todo lo que va a la izquierda de los : lleva comillas
¿En que tipos de datos no usamos “””?
Number, true/false, null
¿Qué valores puede tomar un atributo en JSON?
OBJECT
ARRAY
NUMBER
STRING
TRUE
FALSE
NULL
¿Cómo se representan los decimales con comas o puntos?
con puntos siempre.
¿Que API´s de programación JSON conoces?
JSON-P y JSON-B
¿Qué librerías de JSON conoces?
Jackson
GSON(google)
Caso de uso de JSON para seguridad
TOKEN (JWT) (el cliente lo envía al backend en cada petición usando esta cabecera –> Authorization: Bearer eyJhbGci…)
Revisa si este enlace del fichero XML con el fichero de gramática XSD y dime si es correcto
<aeropuerto>
</aeropuerto>
El tipo de espacio de nombres debe ser XSI de XMLSchema-instance
<aeropuerto>
</aeropuerto>
¿Que significan las etiquetas <xs:all> <xs:sequence>?</xs:sequence></xs:all>
Con all puedo poner los elementos en el orden que quiera.
Con Sequence tengo que seguir el orden indicado en al
¿Qué son minOccurs=”0” maxOccurs=”unbounded” en un XSD?
Operadores de carnalidad. Número de ocurrencias que pueden aparecer.
Según la declaración
<marcadores>
El atributo noNameSchemaLocation permite referenciar a un archivo con la definición de un esquema que no tiene ningún...
</marcadores>
espacio de nombres asociado. En este caso, dicho archivo es “marcadores.xsd”.
Que define la siguiente sentencia:
xmlns:mar=”http://www.abrirllave.com/marcadores”:
Un espacio de nombres
Que valores puede tomar la propiedad elementFormDefault usada para definir espacios de nombres
qualifie <marcadores>
unqualifie(por defecto) <mar:marcadores....></mar:marcadores....></marcadores>
Tipos de declaración de elementos simples
(fixed, default)
Define el Xsd para <hora>18:29:45</hora>
<xs:element></xs:element>
Define el XSD para el siguiente elemento y atributo
<curso>2</curso>
<xs:element></xs:element>
<xs:attribute></xs:attribute>
Tipos de declaración de atributos
fixed, default, optional(por defecto), required
Define un atributo requerido y otro fidex
<xs:attribute></xs:attribute>
<xs:attribute></xs:attribute>
¿Para que sirven las Restricciones o facetas?
permiten definir restricciones sobre los posibles valores de atributos o elementos
EJEM: XS:LENGHT – Especifica una longitud fija
¿Para qué sirve xs:whiteSpace?
Especifica cómo se debe tratar a los posibles espacios en blanco, las tabulaciones, los saltos de línea y los retornos de carro que puedan aparecer.
¿Para qué sirve maxInclusive y maxExclusive?
Valor debe ser menor o igual que el indicado.
Especifica que el valor debe ser menor que el indicado.
Define una faceta o restricción para un elemento llamado “mes” con la restricción de que el valor que tome no pueda ser menor que 1 ni mayor que 12:
<xs:element>
<xs:simpleType>
<xs:restriction>
<xs:minInclusive></xs:minInclusive>
<xs:maxInclusive></xs:maxInclusive>
</xs:restriction>
</xs:simpleType>
</xs:element>
¿Que ventaja tiene definir un tipo con este formato?
<xs:element></xs:element>
<xs:simpleType>
<xs:restriction>
<xs:minInclusive></xs:minInclusive>
<xs:maxInclusive></xs:maxInclusive>
</xs:restriction>
</xs:simpleType>
El tipo numeroMes definido, podría ser utilizado por otros elementos, ya que, no está contenido en el elemento “mes”.
Por ejemplo para otras cosas que fuesen 12… apóstoles por ejemplo
Nombra los indicadores de orden y para que se utilizan
- xs:sequence sirve para especificar el orden en el que obligatoriamente deben aparecer los elementos hijo de un elemento,
- xs:all sirve para indicar que dichos elementos pueden aparecer en cualquier orden.
- xs:choice sirve para especificar que solamente se permite escribir uno de los elementos hijo.
Nombra los indicadores de ocurrencia y para que se utilizan
- maxOccurs y minOccurs permiten establecer, respectivamente, el número máximo y mínimo de veces que puede aparecer un determinado elemento. El valor por defecto para maxOccurs y minOccurs es 1.
Nombra los indicadores de Grupo y para que sirven
- xs:group sirve para agrupar un conjunto de declaraciones de elementos relacionados.
- AttributeGroup sirve para definir un grupo de atributos. Por ejemplo.
¿Que es un Processor?
API que fusiona XML Y XSLT para convertirlo en XHTML.
El resultado es otro documento de marcas.
¿Para que sirveAPACHE xalan?
Es un Processor(xml+xslt–>XHTML)
¿Para que sirve XSLFO?
Fusiona XML Y XSL para conseguir un documento pdf, imagen…
Ejemplo APACHEFO
¿Qué es APACHE XERCES2?
Xerces2 es una librería de Apache que nos permite el parseo de documentos XML mediante la implementación de los estándares de parseo SAX y DOM
Cual es la característica principal del API DOM
El Parser genera del documento XML un árbol de objetos en memoria que podremos modificar añadiendo nuevos nodos, eliminando o modificando.
¿Cómo se llaman los elementos del arbol?¿Qué tipos de nodos hay?
Se llaman nodo y Todos son de tipo interface
Estos heredan de NODE
Element
Attr
Text
Document(Nodo instrumental)
¿Cual es el nodo especial de la API dom?
El nodo Document, es un nodo instrumental, guarda toda la información del documento.
¿Cómo se llama el API que nos ayuda a convertir los cambios en memoria del DOM a cambios reales que puedo imprimir por pantalla o enviar a un archivo?
API TRAX
¿A que se llama UNMARSHAL cuando utilizamos el API JAXB?
Convertir el arbol de elementos xml en objetos de negocio y lo cargo en memoria.
¿Cómo trabaja JAXB?
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 (Ej. Factura, Empleado, etc).
¿A que se llama MARSHAL cuando utilizamos el API JAXB?
Convertir el arbol de objetos de negocio en objetos XML
¿Cuál es la herramienta de JAVA que crea las clases de negocio a partir del un XSD?
XJC
Con la utilidad XJC de la JDK somos capaces de generar esas clases automáticamente a partir de un XSD(la gramática)
Ejemplo xsd– de la factura electrónica.
¿Qué hace la variante StAX de JAXB?
En lugar de levantar todo el árbol de objetos lo puede controlar el programador e ir leyendo por “trozos” esto sirve para cuando los archivos XML son muy grandes, evitar que el programa se demore
Por ejemplo de una factura leo solo las líneas de factura y levanto en memoria solo las partes que quiero.
¿Para que sirve XPATH?
para “seleccionar” nodos de un XML llamado XPath (equivalente a los CSS Selectors)
¿Dónde busca el selector //div de XPATH?
En cualquier nivel del arbol
¿Que devuelve //actor[@id]?
Todos los elementos que tienen un atributo id.