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()