Está en la página 1de 7

DTD: Document Type Descriptor

<!ELEMENT nombre …………>

Modelo de Contenido Significado

EMPTY Sin contenido ni subelementos. Es una hoja.


ANY Tanto texto como subelementos.

() Dentro de los paréntesis, se coloca la lista de


subelementos separados por:
· “,”: secuencia de elementos, orden escrito
· “|”: disyunción
Cada subelemento puede tener cardinalidad:
· *: 0 o mas veces
· +: 1 vez o mas
· ?: puede estar o no
Si no se especifica, aparece 1 vez.

(#PCDATA) El contenido del elemento es texto y no tiene


subelementos. Este nodo tendrá un hijo tipo #Text

(#PCDATA | …) * Contenido mixto: puede tener tanto


subelementos como texto

<!ATTLIST elementoNombre nombreAtributo1 tipoAtributo1 valorDefault1>

elementoNombre Nombre del elemento al que pertenecerá el atributo

atributoNombre Nombre del atributo. No puede repetirse dentro del mismo elemento.
atributoTipo CDATA: cualquier texto, es el default.
( ): selección de entre algún valor de la lista allí mencionada. Los valores se
separan con el símbolo (|)
ID: si el valor es único dentro del documento. No puede haber mas de un
atributo ID para el mismo elemento. El valor de un atributo ID debe ser
alfanumerico comenzando con letra o “_”. No puede usarse junto con #FIXED.
IDREF: el valor es un ID existente de otro elemento.
IDREFS: el valor es una lista de IDs.
ENTITY, ENTITIES, NOTATION: indicamos que un “entity” esuna asociación
(shortcut) entre un nombre y cierto texto (como las macros de lenguaje C). Su
declaración es <!ENTITY entityNombre “entityValor” >.
Ejemplo: <!ENTITY email
valorDefault #REQUIRED: el atributo es obligatorio.
#IMPLIED: el valor del atributo es opcional y no hay default asumido.
“valor”: el valor del atributo es asignado automáticamente si no se lo
proporciona.
#FIXED “valor”: solo ese valor indicado es el admitido cada vez que aparezca
en el documento.

• En un atributo, pueden indicarse exactamente los valores posibles de su contenido(lista de


enumeración), en cambio, eso no es posible en el contenido de un elemento hoja.
• Si es un atributo y se indica que es de tipo ID, sirve para indicar que no puede repetirse en el
documento, identificando a un elemento de manera unica.
• Si es un atributo, puede especificarse valor default, eso con contenido no es posible realizarlo.
• Un atributo no puede tener subelementos y un elemento sí.
• No puede especificarse el orden en que se quiere que aparezcan los atributos, a diferencia de los
elementos.

Desventajas del DTD vs. XML Schema


• Contenidos: no se puede expresar que el texto responda a un formato de fecha, entero, decimal, etc.

• Las mejores restricciones de contenido sólo se logran expresar a través de atributos.

• El DTD no es en sí un documento XML (doble parser).

• La frecuencia repetitiva sólo permite + o * (no exacta).

• No se puede expresar la falta de orden de un conjunto de subelementos.

• Una regla en un DTD no puede reusarse en otro DTD => no hay extensibilidad.
XML Schema (xsd)

· simpleType: no contiene subelementos ni atributos, es solo texto.


· complexType: contiene subelementos y/o atributos.
Vocabulario:

1. schema: raíz del xsd. Es un tag reservado para marcar principio y fin.
2. element: declaración de un elemento:
a. name: especifica el nombre del tag del elemento.
b. minOccurs, maxOccurs: cantidad mínima o máxima. El default es 1.
c. type: tipo de dato del documento, el default es string.
d. default, fixed
3. attribute: declaración de un atributo

a. name
b. type
c. use
SIMPLETYPE

Ejemplo de sympleType:

<xsd: element name=”fecha” type=”xsd:date”>

1. Con restriccion:

<element name=”nroEdicion”>
<simpleType>
<restriction base=”integer”>
<minInclusive value=”1000”/>
<maxInclusive value=”1500”/>
</restriction>
</simpleType>
</element>

<elment name=”nroEdicion”>
<simpleType>
<restriction base=”integer”>
<enumeration value=”1000”/>
<enumeration value=”1001”/>
<enumeration value=”1002”/>
</restriction>
</simpleType>
</element>
XPATH
1. Nodos: En XPath, todo se trata de nodos. Los nodos pueden ser elementos, atributos, texto o
cualquier otra parte de un documento XML.

2. Expresiones XPath: Son combinaciones de nodos y operadores utilizados para localizar y


seleccionar nodos en un documento XML. Por ejemplo, ‘//book’ selecciona todos los nodos
"book" en el documento.

3. Ubicaciones: Las ubicaciones XPath describen la ruta para encontrar un nodo en el árbol de
nodos de un documento XML. Por ejemplo, ‘/library/book’ selecciona todos los nodos
"book" que son hijos directos del nodo "library".

4. Predicados: Los predicados se utilizan para filtrar nodos basados en ciertas condiciones. Por
ejemplo, ‘//book[@category='fiction']’ selecciona todos los nodos "book" que tienen el
atributo "category" con el valor "fiction".

5. Funciones XPath: XPath también proporciona una variedad de funciones incorporadas que
se pueden utilizar en las expresiones XPath para realizar operaciones específicas. Algunas
funciones comunes incluyen ‘text()’, ‘contains()’, ‘starts-with()’, ‘count()’ entre otras.

Ejemplo:
/child::universidad/child::curso/attribute::ID puede escribirse como /universidad/curso/@ID

Devuelve una lista de nodos “attribute” llamados ID

QName Se considera elemento hijo del context node

@QName Se considera atributo del context node


* Selecciona todos los nodos hijos del contexto

. o .. Se considera al context node


/ o// Inicio de expresion

Ejemplos:
Calcular los @ID de alumnos que alguna vez desaprobaron alguna materia:

➔//alumno/@ID[../nota<4]

Calcular los alumnos que alguna vez desaprobaron una materia:

➔/universidad/alumno[@ID=//alumno/@ID[../nota<4]]
Calcular los cursos cuyo promedio de notas de sus alumnos es >=5.

➔//curso[sum(.//nota) div count(.//nota) >= 5 ]

Calcular el promedio de las notas de la universidad:

➔sum(//nota) div count(//nota)

Alumnos que contengan en su nombre la letra ‘n’

➔//alumno[contains(name, ‘n’)]/@ID

Funciones node-set:
· count() = devuelve la cantidad de nodos
· name() = devuelve el nombre del atributo o elemento
· last() = devuelve el ultimo nodo de un conjunto
· position() = devuelve la posición del nodo
· text() = retorna el contenido texto del elemento al que se aplique

Funciones lógicas:
· not(), or, and, =, !=, <, <=, >, >=

También podría gustarte