XML Flashcards

1
Q

En que lenguaje se basa XML

A

SGML

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

¿Qué es XML? ¿Conoces alguna etiqueta de XML?

A

Conjnto de reglas para construir lenguajes de etiquetas (html, svg, firma).

No se tienen etiquetas porque no es un lenguaje, son las reglas para crearlo.

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

Caracteristicas de XML Bien Formado

A
  • Todas las etiquetas tienen que llevar cierre
  • Los atributos deben de ir entre dobles comillas
  • Case-Sensitive
  • 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 (o con ‘:’ y ‘_’ aunque es raro)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Caracteristicas de XML 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
5
Q

Declaración en un fichero XML

A

<!–- La declaración es opcional –>
<?xml versión=“1.0” encoding=“utf-8” standalone=“no”?>

<!–- Especificamos la gramatica .dtd –>
<!DOCTYPE empleados SYSTEM “empleados.dtd”>

<empleados>
.....
</empleados>

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

Escapar caracteres especiales en XML

A

Se pueden hacer con entities, hay que marcarlos con ‘&’ y el parser pondrá su caracter

  • & amp;
  • & lt;
  • & gt

Cuando queramos realizar un texto con caracteres especiales de un cierto tamaño tenemos la opción de decirle al parser que ignore el bloque de código

<observaciones>
            <![CDATA[   texto que el parser no analiza (<> á | )  ]]>
</observaciones>
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

¿Cómo declarar y usar name spaces en XML?

A
<root xmlns:h=“http://uri-a” xmlns:f=“http://uri-b”>
      <h:tag1> … </h:tag1>
       <f:tag1> … </f:tag1>
</root>
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Esquema y reglas de un DTD

A

Antiguos y poco flexibles

  • standalone=“yes” / “no”. Indica si el dtd está autocontenido en el fichero. “yes”-> todo en el mismo fichero. “no”-> en dos ficheros.
  • *–> 0:N
  • +–> 1:N
  • # PCDATA –> Texto para !ELEMENT dentro de las etiqueta
  • CDATA –> Texto para ATTLIST con comillas
  • <!ELEMENT nombreElemento ANY> admite cualquier combinación de texto (#PCDATA) y ELEMENT
  • <!ELEMENT nombreElemento EMPTY> sin comentarios :-)
  • Otros tipos de atributos son ID e IDREF (similar al concepto de clave primaria y ajena) <!ATTLIST director coddir ID #REQUIRED> ||<!ATTLIST pelicula direccion IDREF #REQUIRED>
  • NO podemos definir dominios de datos para contenidos de Elements y atributos. No maneja tipo de datos.
<?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” 
                equipo="Ferrari">Sebastian Vettel</f1>
       <f1 equipo="McLaren">Fernando Alonso</f1>
        <tenis>Rafael Nadal</tenis>
</deportistas>
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Esquema y reglas de un XSD

A

Nuevos y flexibles

  • Se define un name space para asociar el fichero con los datos a la gramatica. Ej.: < aeropuerto xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xsi:noNamespaceSchemaLocation=”aeropuerto.xsd”>
  • < xs:complexType mixed=”true” > Texto y etiquetas dentro del Element
  • < xs:all> / < xs:sequence> / < xs:choice> –> Presencia o no y no importa el orden / Presentes y el orden es el de la xsd / Se definen el nº de ocurrencias de cualquiera de los hijos.
  • min/maxOccurs=”unbounded” –> para determininar el número de Elements
  • type=”xs:string” –> Se pueden definir tipos de datos (xs:time, xs:string, xs:integer, xd:ID….)
  • < xs:pattern value=”[CER]”/> –> Validacion por patrones
  • Restricciones -> length, min / maxLength, totalDigits …. Ver documento xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="aeropuerto">
<xs:complexType>
<!–- Pueden aparecer en cualquier orden, contrario que usar sequence -->
<xs:all>
<xs:element name="nombre" type="xs:string"/>
<xs:element name="vuelos">
    <xs:complexType>
    <xs:sequence>
        <xs:element name="vuelo" minOccurs="0" maxOccurs="unbounded">
    		<xs:complexType>
			<xs:sequence>
				<xs:element name="diario" minOccurs="0"/>
				<xs:element name="origen" type="xs:string"/>
				<xs:element name="destino" type="xs:string"/>
				<xs:element name="hora-salida" type="xs:time"/>
				<xs:element name="hora-llegada" type="xs:time"/>
			</xs:sequence>
			<xs:attribute name="código" type="xs:ID" use="required"/>
			<xs:attribute name="estado" default="E">
<!-- Creamos tipo de dato a partir de un tipo base y añadiendo restricciones-->
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:pattern value="[CER]"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
    		</xs:complexType>
        </xs:element>
    </xs:sequence>
    </xs:complexType>
</xs:element>
<xs:element name="fecha" type="xs:date"/>
</xs:all>
</xs:complexType>
</xs:element>
</xs:schema>
<?xml version="1.0" encoding="UTF-8"?>
<aeropuerto
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="aeropuerto.xsd">
	<nombre>JFK</nombre>
	<vuelos>
		<vuelo código="V22" estado="R">
			<diario />
			<origen>New York</origen>
			<destino>Chicago</destino>
			<hora-salida>09:30:00</hora-salida>
			<hora-llegada>11:30:00</hora-llegada>
		</vuelo>
		<vuelo código="V23" estado="C">
			<origen>New York</origen>
			<destino>Miami</destino>
			<hora-salida>10:15:00</hora-salida>
			<hora-llegada>11:15:00</hora-llegada>
		</vuelo>
	</vuelos>
	<fecha>2013-12-20</fecha>
</aeropuerto>
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Herencia (extensiones) en una xsd

A
<xs:complexType name="infoPersonaAmpliada">
	<xs:complexContent>
		<xs:extension base="infoPersona">
			<xs:sequence>
				<xs:element name="ciudad" type="xs:string"/>
				<xs:element name="pais" type="xs:string"/>
			</xs:sequence>
		</xs:extension>
	</xs:complexContent>
</xs:complexType>

<xs:complexType name="infoPersona">
	<xs:sequence>
		<xs:element name="nombre" type="xs:string"/>
		<xs:element name="edad" type="edadPersona"/>
	</xs:sequence>
	<xs:attribute name="numero" type="xs:integer"/>
</xs:complexType>

<xs:simpleType name="edadPersona">
	<xs:restriction base="xs:integer">
		<xs:minExclusive value="-1"/>
		<xs:maxExclusive value="131"/>
	</xs:restriction>
</xs:simpleType>
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Restricciones (facetas) en Elements de un xsd

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

Tipos de datos en xsd

A
  • xs:string
  • xs:integer
  • type=”xs:string” default=”B”
  • type=”xs:string” fixed=”agosto”
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Sequence, All, Choice y cardinalidades

A
  • < xs:all> –> Presencia o no y no importa el orden
  • < xs:sequence> –> Presentes y el orden es el de la xsd
  • < xs:choice> / Se definen el nº de ocurrencias de cualquiera de los hijos
    • maxOccurs=”5”
    • minOccurs=”2”
    • maxOccurs=”unbounded”
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

¿Qué es XSL?

A

eXtensible Stylesheet Language

Cuando pasamos un parser con las directrices de la hoja XSL, el documento se trasnforma en otro documento, ya sea de etiquetas o con otra forma.

  • XSL-FO –> eXtensible Stylesheet Language Formatting Objects. Para generar documentos (pdf…)
  • XSLT –> Extensible Stylesheet Language Transformations. Genera otro documento de etiquetas (HTML, SVG….)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Lista de API’s XML en Java

A
  • JAX-P -> Conjunto de todas las apis de xml. Dentro DOM/SAX/XSLT/StAX
  • DOM
  • SAX
  • JAX-B
  • StAX
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

API DOM en Java

A

XML — Parser DOM (Xerces) —- Árbol objetos en memoria

org.w3c.dom

  • 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
  • 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(objeto instrumental para las funcionalidades)
17
Q

API SAX en Java

A

braSAX -> Manda eventos al recorrer el árbol del xml y no nos da opción de movernos por el.

XML —Parser SAX (Xerces) —– flujo hacia clase java(listener)

org.xml.sax

  • 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.
  • Te avisa cuando Empieza / Termina el documento
  • Te avisa cuando llega a un nuevo Elemento.
18
Q

API JAXB en Java

A

Trata xml a alto nivel

  1. XSD — XJC —- Clases de negocio
  2. XML — Parser JAXB —- Árbol objetos en memoria
  • 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).
  • Con la utilidad xjc de la JDK somos capaces de generar esas
    clases automáticamente a partir de un XSD
  • Marshall –> De XML a objetos
  • Unmarshall –> De objetos a XML
  • Posibles árboles en memoria muy grandes
19
Q

API StAX en Java

A

Permite junto con JAXB levantar solo as partes del XML que queremos, bajo demando.

20
Q

¿Qué es XPath?

A

Estándar para “seleccionar” nodos de un XML llamado XPath (equivalente a los CSS Selectors)

En Java te obliga a construir el árbol DOM para usarlo.

  • //nombreElement –> da igual de donde cuelgue, extrae el elemento.
  • //nombreElement/@attributo –> Atributo del elemento
21
Q

¿Que es un fichero Markdown? ¿Y RestructureText?

A

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

22
Q

¿Qué es JSON?

A
  • 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 (subdocumentos), Array, Number, String, true, false y null. NOTA: El valor true y false tampoco van entre dobles comillas
  • Librerias para procesar JSON: Jackson y GSON
  • API’s de programación: JSON-B y JSON-P
  • Un uso muy importante sería en el ámbito de la seguridad, para autenticación web (JWT)
    (el cliente lo envía al backend en cada petición usando esta cabecera –> Authorization: Bearer eyJhbGci…)
  • OJO!! Los arrays pueden ser de tipos distintos en su interior. {5, “rosa”, true, null, {“nombre”:”hola”, “edad”: 25}}
23
Q

¿Qué es YAML?

A
  • YAML es un acrónimo recursivo que significa YAML Ain’t Markup
    Language (en castellano, ‘YAML no es un lenguaje de marcado’)
  • Formato de serializacion legible por humanos
  • Muy usado como fichero de configuración (ej. Swagger/OpenAPI
    para documentar una API’s rest o un Ansible playbook)
24
Q

En el lenguaje XML, ¿cuál de las siguientes sentencias sería correcta para añadir comentarios?

a) <– Aquí va el comentario />

b) <Aquí></Aquí>

c) <!-- Aquí va el comentario -->

d) <! Aquí va el comentario —>

A

c) <!-- Aquí va el comentario -->

25
Q

Se han detectado varios errores en la exportación a XML de los diferentes listados de notas y le solicitan su ayuda. Sin tener en cuenta si la información está bien representada, ¿cuál de los siguientes XML está bien formado?

a) < Opositor>Winston Churchill< Nota1>95</nota1><Nota2>65</nota2></opositor></Nota2>

b) < Opositor>Winston Churchill< Nota1>95</Nota1><Nota2>65</Opositor></Nota2>

c) < Opositor>Winston Churchill< Nota1/>85< Nota2/>65</Opositor>

d) < Opositor>Winston Churchill< Nota1>95</>< Nota2>65</></>

A

c) < Opositor>Winston Churchill< Nota1/>85< Nota2/>65</Opositor>

26
Q

En su Subdireccién van a usar JSON para realizar intercambio de datos, y le preguntan, de entre los siguientes, cuál sería un fichero JSON válido.

a) {“nombre”: “Juana”, “apellido”: “Ruiz”)

b) {‘nombre’: ‘Juana’, ‘apellido’: ‘Ruiz’)

c) {nombre: “Juana”, apellido: “Ruiz”)

d) {nombre: “Juana”; apellido: “Ruiz”)

A

a) {“nombre”: “Juana”, “apellido”: “Ruiz”)

27
Q

Con respecto a JSON, señale la correcta:

a) Es un tipo de gramática XML.

b) Es una API de Java

c) Es un conjunto de librerfas de Javacript.

d) Es un formato de intercambio de datos.

A

d) Es un formato de intercambio de datos.

28
Q

Una diferencia entre las APIs de Java, SAX y JDOM, es:

a) SAX permite acceso directo a los elementos del XML, con JDOM el acceso es secuencial.

b) SAX requiere más memoria para procesar el documento XML que JDOM.

c) JDOM es recomendable para la edición o cambios en documentos XML, SAX para la lectura de documentos XML.

d) JDOM lanza un evento cuando encuentra un elemento en el documento XML, SAX no lanza eventos.

A

c) JDOM es recomendable para la edición o cambios en documentos XML, SAX para la lectura de documentos XML.