Tema_8_XML Flashcards
Datos sobre JSON:
- Lenguaje Schema-Less, nativo para JavaScript y muy utilizado para intercambio de datos. Basado en atributo-valor.
- Estandar ECMA 404 e ISO 21778
- Tipo MIME: application/json
- Tipos de datos: Object, Array, Number, String, true, false y null, estos tres últimos no llevan comillas.
- Todos los atributos, siempre van entre dobles comillas.
- Librerías para procesar JSON: Jackson y GSON
Librerías Jackson & Gson C.O. - API’s de programación: JSON-B y JSON-P
- Un uso importante sería la seguridad, para autenticación web (JWT)
- Si se abre un {, es un OBJETO
- Si se abre un [ { es un ARRAY DE OBJETOS.
¿Qué es el prólogo de un XML?
Es la primera línea del código.
¿Qué significa PUBLIC ó SYSTEM en el DTD?
PUBLIC. Son públicas. Se va a usar en red o internet.
SYSTEM. Son privadas. Se va a usar a nivel LOCAL
¿Donde se ponen comillas dobles en JSON?
En las properties, por ejemplo: “edad”:……
En las cadenas de caracteres, por ejemplo: “nombre” : “Pablo”
¿Que es un !ELEMENT en XML?
- Lo vemos cuando se define la gramática en DTD.
- Nos da el nombre de la etiqueta ROOT
- Va enumerando las etiquetas que pueden aparecer en el XML que están validando.
- Son EXTENSIBLES
- Se declaran en el DTD
- NO CONFUNDIR CON xs:element, que es lo mismo, pero en XSD.
Por ejemplo:
¿Donde NO se ponen dobles comillas?
En TRUE, FALSE y NULL.
¿Qué dos recomendaciones tenemos para transformar un XML en otra cosa?
XSLT y XSLFO
Espacios de nombres..
Para diferenciar etiquetas con el mismo nombre, pero con datos diferentes en su interior. Por ejemplo en la foto tenemos dos elementos “table”, pero su contenido es muy diferente.
¿Como es la sintaxis de JSON?
- Los OBJETOS se abren con llaves, como {
- Después ponemos nombres o atributos entre comillas SIEMPRE.
- Si queremos anidar un objeto dentro de otro, se abren más llaves {
- Los Arrays se abren con corchetes[
ejemplo:
var objetoJSON = {“usuario”:”user”,”password”:”123456”};
¿Qué es Marshalling?
También conocido como SERIALIZACIÓN.
Es el proceso de transformar un objeto o una serie de datos, en un formato que pueda ser almazenado en una ubicación secundaria o transmitido por la red. Como en la película TRON.
¿Qué es un XML válido?
Cumple las reglas de la GRAMÁTICA especificadas en el DTD o XSD
O la estructura que hemos validado.
¿Qué es un 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. Ejemplo:
<etiqueta/>
llamada Empty Element - Los nombres de las etiquetas pueden ser alfanuméricos, pero siempre comenzando con una letra.
¿Qué es Unmarshalling?
Se realiza en la parte del receptor y es el proceso de reconstruir el mensaje que ha recibido en formato estandar, al lenguaje que necesita para trabajar. Es un proceso más complicado que Marshalling.
Pasar de XML a Clases java.
¿Que tipo MIME tiene XML?
Hay dos:
APLICATION/XML
TEXT/XML
¿Qué otra tecnología hay parecida a DTD y XSD, en JSON, para validar sus datos?
Los JSON SCHEMA
¿Qué es XML?
Es un METALENGUAJE
¿Qué es YAML?
Es una especie de evolución de JSON. Se usan los dos actualmente.
¿Como es el proceso de transformación con XSLT?
Se funde un XML con un XSLT para dar lugar a otro archivo de etiquetas, como HTML.
Permite separar CONTENIDO de PRESENTACIÓN.
¿Donde podemos encontrar los !ELEMENT en XML?
- De forma externa en el DTD o el XSD y hay que añadir el enlace a ellos.
- De forma interna, en el encabezado del XML.
¿Como es el proceso de transformación con XSLFO?
Se funde un XML y un XSLFO, para dar lugar a otro archivo, por ejemplo PDF.
En el documento XSL-FO, figuran tanto los datos como el formato que se les va a aplicar.
Documentos de validación de un documento XML:
- DTD
- XSD
¿Qué es JAXB?
- Un API de XML.
- Se usa como SAX y DOM, para recorrer un XML y sacar su información.
- Cuando transforma el XML a un árbol de objetos, para trabajar con el, esto se llama UNMARSHALL
- Cuando transforma el árbol de objetos a un XML, esto se llama MARSHAL (Serializar)
- JAXB, tiene la ventaja de que en el árbol que crea, las etiquetas tienen el nombre de las nuestras y no las genéricas de DOM.
- Java Architecture for XML Binding (JAXB) permite a los desarrolladores Java asignar clases de Java a representaciones XML.
¿Que es ECMA 404?
Es JSON. Un lenguaje ligero, para definir Data Interchange Formats.
Deriva de ECMAScript
¿Qué restricciones añade XML respecto de SGML?
- Todas las etiquetas tienen que llevar cierre (inclusive las empty elements)
- Los atributos deben ir entre comillas
- Es CASE-SENSITIVE → COLOR no es lo mismo que color.
¿Qué es XPath?
[https://www.freeformatter.com/xpath-tester.html]
- Es similar a los SELECTORES CSS
- Son para hacer SELECCIÓN
- XPath, permite construir expresiones que recorren y procesan un documento XML, en el que busca y selecciona aquello que le hemos dicho.
¿Que significa en el prólogo de XML, la palabra STANDALONE?
Nos indica si la gramática, la podemos validar con el propio XML o tenemos que recurrir a un archivo externo.
Su sintaxis sería STANDALONE=”YES” o STANDALONE=”NO”
YES = Cuando la gramática está contenida dentro del XML.
NO = Cuando la gramática está en un documento externo, que puede ser un DTD O XSD
¿Cual es el Tipo/Mime de XHTML?
application/xhtml+xml
¿Qué es un EMPTY ELEMENT?
- Es una etiqueta que se abre y se cierra en la misma línea.
- Un EMPTY ELEMENT puede tener atributos.
- ejemplo:
<etiqueta/>
Dí cuales son las reglas que tiene que seguir !ELEMENT para estar bien formado.
- Element names are case-sensitive
- Element names must start with a letter or underscore
- Element names cannot start with the letters xml (or XML, or Xml, etc)
- Element names can contain letters, digits, hyphens, underscores, and periods
- Element names cannot contain spaces
¿Se pueden añadir más etiquetas a un Element que ya está formado?
Si. Por eso es Extensible.
¿Qué significa XSD?
XML Schema Definition
¿Qué son SAX y DOM?
- Son API’s de XML.
- SAX, que significa “Simple API for XML”, API, para usar XML en JAVA.
- Sirven para recorrer un XML, buscando información.
- DOM, genera del XML, un árbol de objetos, que llamamos NODOS. También tiene especializaciones delos nodos, como, Element, Attr, Text y Document.
- SAX, lee el XML, de principio a fin, sin pausas, pero va avisando de los eventos que encuentra
¿Quién estandariza XML y de donde deriva?
Es un estandar de la W3C
Deriva de SGML
¿Qué es un documento bien formado y válido?
Que cumpla con la sintaxis de XML, para estar bien formado
Es válido cuando cumple con DTD o XSD
¿Como es la declaración del DTD dentro del XML?
Sería como en la captura, pero adaptándolo con los nombres y el número de ellos que necesitemos.
El primer “note”, es el elemento ROOT y TO, FROM etc, las etiquetas hijas del ROOT.
¿Que es una ENTIDAD en XML?
Se representa con “&texto;” ó “%texto;” y significa que ahí se va a poner otra cosa.
¿Qué lleva dobles comillas siempre en JSON?
Las cadenas de carcactéres.
¿Como es el funcionamiento del API del DOM?
Genera un árbol con los datos.
¿Qué es XQuery?
Lenguaje de programación, para extraer datos de un XML. Utiliza expresiones similares a SQL conocidas como FLWOR, que equivale a:
FOR
LET
WHERE
RETURN
XQuery dió lugar a un subconjunto que es XPath.
Con XQuery, se puede construir un nuevo XML con los datos adquiridos en la consulta.
Di tipos de datos de JSON
String
Boolean
Array
Object
Null
Number
¿Qué significa JSON?
JavaScript Object Notation
¿Qué es JSON?
Es un formato de datos basado en texto que sigue la sintaxis de JavaScript. Se usa mayormente para intercambiar datos.
JSON es una cadena de datos. Pero si lo tenemos que convertir a un objeto nativo de JavaScript, como se llama al proceso?
PARSING
Un PARSER, es un analizador sintáctico.
Si tenemos que convertir un objeto nativo de JavaScript, a cadena de caracteres, se llama…
STRINGIFICATION
El comando de JavaScript concretamente es:
JSON.stringify
¿Qué tipos de entidades hay en XML?
- Entidad Interna, Macro o Constante de Texto. Empieza por &.
Ejemplo: !ENTITY nom “Juan Pérez López”. Así, si escribo &nom, me pone Juan Pérez. Existen 5 tipos de entidades internas predefinidas que están en un cuadro en otra pregunta.
- Entidad de parámetros. Solo pueden aparecer en el DTD. Empieza por %
- Entidad Externa
Ejemplo:
En el DTD:
!ENTITY escritor “Perico el de los Palotes”
En el XML:
autor &escritor /autor = Perico el de los Palotes
¿Qué tipo de entidades podemos encontrar con &?
¿Qué son JWT?
JSON web tokens
Estandar abierto basado en JSON propuesto por IETF para la creación de tokens de acceso que permiten la propagación de identidad y privilegios o “claims”.
Consta de HEAD, PAYLOAD Y SIGNATURE.
Se SERIALIZA, usando Base64.
¿Como es la declaración externa del DTD ?
Hay que añadir una referencia al DTD externo:
¿Para qué usamos ! [CDATA[Texto]] en xml?
Para decirle que el texto que sigue, NO lo tiene que interpretar, que lo tiene que leer tal cual.
Se escribe: <![CDATA[ Texto que no se analiza]]>
¿Como podemos solventar un conflicto de etiquetas con el mismo nombre?
- Se usa el ESPACIO DE NOMBRES, QUE NO ES MÁS QUE UN PREFIJO.
- Se le pone un prefijo a la etiqueta y se declara como sigue:
<root xmlns:h="http://uri-a" xmlns:f="http://uri-b">
<h:tag1>......</h:tag1>
<f:tag1>.......>/f:tag1>
¿Como funciona el Marshalling?
El mensaje del emisor, se convierte a un formato estandar y este, en la parte del receptor, este se encarga de convertirlo al formato que necesite.
¿Que formatos estandar tenemos para hacer el Marshalling?
- CORBA
- SERIALIZACIÓN DE JAVA - Se genera una secuencia de bytes lista para su almacenamiento y transmisión.
- XML
¿Qué significa XML?
eXtensible Markup Language
¿Para qué fué diseñado XML?
- Para almacenar y transportar datos. Y para ello, es independiente del software y del hardware.
- Es autodescriptivo.
- Es una recomendación de la W3C.
¿Cual es la estructura de un XML?
Se empieza por el prólogo:<!-- Esto es un comentario -->
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE empleados SYSTEM "empleados.dtd">
Y lo siguiente es el elemento ROOT y por debajo están los hijos y subhijos.
El elemento ROOT, es el padre de todos los elementos.
<root>
<child>
<subchild>…..</subchild>
</child>
</root>
OJO***El prólogo no tiene / de cierre.
¿Qué debemos usar obligatoriamente, cuando ponemos prefijos, para solventar conflictos de nombre?
Debemos DEFINIR ESPACIOS DE NOMBRES, para cada prefijo que pongamos.
El ESPACIO DE NOMBRES debe ser definido en un ATRIBUTO XMLNS, en la etiqueta de apertura del elemento. Y tiene la sintaxis: xmlns:prefijousado=”URI”
¿Qué es XMLHttpRequest?
Es un objeto para recojer datos de un servidor.
Lo solemos encontrar integrado en los navegadores modernos.
Se usa en AJAX.
¿Qué tiene que cumplir un XML, para poder hacer una búsqueda en él?
Tiene que estar cargado en el DOM
¿Qué hace la siguiente expresión?
xmlDoc.getElementsByTagName(“title”)[0].childNodes[0].nodeValue;
- xmlDoc - the XML DOM object created by the parser.
- getElementsByTagName(“title”)[0] - get the first element
- childNodes[0] - the first child of the element (the text node)
- nodeValue - the value of the node (the text itself)
¿Cuales son los métodos de XML DOM?
- x.getElementsByTagName(name) - get all elements with a specified tag name
- x.appendChild(node) - insert a child node to x
- x.removeChild(node) - remove a child node from x
¿Qué se utiliza para enlazar en XML?
Se usa DOCTYPE
Por ejemplo, para enlazar con el DTD, se pondría:
<!DOCTYPE empleados SYSTEM “empleados.dtd”>
¿Qué es XHTML?
Básicamente es un HTML expresado como un XML.
Comentar en XML
<!-- esto es un comentario -->
¿Qué es #PCDATA?
Nos dice que dentro de la etiqueta/elemento, va a ir texto.
Definición de gramática con DTD
- Definimos el elemento ROOT, con
<! DOCTYPE deportistas ]
- Con #PCDATA, decimos que lo que va ahí es solo texto. NO ETIQUETAS.
- Con ANY (mixto), si podemos mezclar TEXTO con ETIQUETAS/ELEMENTOS
- Con EMPTY, va vacío.
En XML, ¿Qué son ID e IDREF?
Son como Clave Primaria y Ajena.
Otros Lenguajes de marcas ligeros:
- MARKDOWN –> .md
- RESTRUCTUREDTEXT –> .rst
- YAML –> Que se usa, para, DEFINIR UN API REST, PARA HACER UN PLAYBOOK DE ANSIBLE Y PARA DOCKER COMPOSE. TAMBIÉN PARA SERIALIZAR.
Definición de gramática con XSD y enlace al XSD:
- Hay que poner xmlns:xsi, donde xsi es XMLSchema-instance
- Ejemplo:
<aeropuerto xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="aeropuerto.xsd">
Ejemplo de un archivo XSD:
- Usamos un XSD, para construir la estructura y elementos de nuestro XML
- Con xs:all, las etiquetas pueden ir en cualquier orden
- Con xs:sequence, las etiquetas tienen que seguir un orden.
- minOccurs=”0” es que puede tener valor cero, osea, no tener ningún valor
- maxOccurs=”unbounded”, 0 o muchos.
¿Qué es Apache Xerces?
- Es un PARSER, para validar y manipular XML’s
- Trabaja con SAX y DOM