Está en la página 1de 8

- Lenguajes de marcas y sistemas de

gestión de información -

Centro Integrado de Enseñanzas Reglada


a Distancia

Unidad de Trabajo 4.- Definición de


esquemas y vocabularios en xml.

Autor: Alejandro Expósito Revenaque

Curso 2023/2024
Lenguajes de marcas y sistemas de gestión de información Tarea 04
Alejandro Exposito Revenaque Curso 2023/24

ÍNDICE

EJERCICIO 1 2
El peso es un número positivo y no puede tener más de tres decimales. 3
Puede haber más de un tamaño. 4
El atributo tipo sólo puede tomar los valores ‘matricial’, ‘láser’, ‘térmica’, y ‘tinta’. Es
obligatorio. 4
El atributo numSerie es obligatorio y hace de identificador. 4
El cartucho está formado por una D mayúscula, tres guiones, cuatro números y una o
dos letras mayúsculas. 5
Todos los elementos son obligatorios. 5
El elemento enred es opcional. De estar presente, es un elemento vacío. 5
El atributo compra, opcional, guarda el año de compra. Es un número entero positivo. 5
En cada fichero hay datos para una o más impresoras. 6

1
Lenguajes de marcas y sistemas de gestión de información Tarea 04
Alejandro Exposito Revenaque Curso 2023/24

EJERCICIO 1
1.- Una empresa utiliza ficheros XML para realizar el inventario, entre otras cosas, de
impresoras. Para cada impresora se quiere guardar su número de serie, marca, modelo,
peso, tamaños de papel con los que puede trabajar, el cartucho que usa, el tipo, el año
de compra y si está en red o no.

Un ejemplo de estos ficheros sería:

<impresoras>
<impresora numSerie="i245" tipo="láser" compra="2019">
<marca>Epson</marca>
<modelo>EPL300</modelo>
<peso>4.52</peso>
<tamaño>A4</tamaño>
<tamaño>A5</tamaño>
<cartucho>D---1234BV</cartucho>
<enred/>
</impresora>
<impresora numSerie="i246" tipo="matricial" compra="2021">
<marca>HP</marca>
<modelo>LaserJet 2410</modelo>
<peso>3.2</peso>
<tamaño>A4</tamaño>
<cartucho>D---4456P</cartucho>
</impresora>
</impresoras>
Escribe un XML Schema para estos ficheros, eligiendo los tipos de datos más
apropiados y teniendo en cuenta que:

● El peso es un número positivo y no puede tener más de tres decimales.


● Puede haber más de un tamaño.
● El atributo tipo sólo puede tomar los valores ‘matricial’, ‘láser’, ‘térmica’, y ‘tinta’.
Es obligatorio.
● El atributo numSerie es obligatorio y hace de identificador.
● El cartucho está formado por una D mayúscula, tres guiones, cuatro números y
una o dos letras mayúsculas.
● Todos los elementos son obligatorios, menos en red.
● El elemento enred es opcional. De estar presente, es un elemento vacío.
● El atributo compra, opcional, guarda el año de compra. Es un número entero
positivo.
● En cada fichero hay datos para una o más impresoras.

2
Lenguajes de marcas y sistemas de gestión de información Tarea 04
Alejandro Exposito Revenaque Curso 2023/24
SOLUCIÓN EJERCICIO 1:

El primer paso para poder ver la estructura general del fichero he empezado por
definir los elementos que componen cada impresora y sin aplicar las
restricciones.

Se utiliza complextype para definir la estructura del elemento impresoras y


impresora por contener varios elementos y poder especificar su composición
interna.

Sequence es utilizado para definir el orden en que deben aparecer los


elementos.

El siguiente paso será aplicar las restricciones. Definiremos nuevos elementos


que nos permitirán especificar varias opciones o condiciones:

El peso es un número positivo y no puede tener más de tres


decimales.

Elemento Peso:

<xs:simpleType name="pesoImpresora">
<xs:restriction base="xs:decimal"> Número decimal
<xs:minInclusive value="0"/> Minimo 0
<xs:fractionDigits value="3"/> Formado con tres decimales
</xs:restriction>
</xs:simpleType>

3
Lenguajes de marcas y sistemas de gestión de información Tarea 04
Alejandro Exposito Revenaque Curso 2023/24

Puede haber más de un tamaño.

Elemento Tamaño

En la misma línea, dentro del elemento impresora, aplicamos los atributos para
cumplir la especificaciones:

<xs:element name="tamaño" type="xs:string" minOccurs="1"


maxOccurs="unbounded"/>
Mínimo debe tener 1, y más de 1 tamaño.

El atributo tipo sólo puede tomar los valores ‘matricial’, ‘láser’,


‘térmica’, y ‘tinta’. Es obligatorio.

Atributo tipo:

<xs:simpleType name="tipoImpresora">
<xs:restriction base="xs:string">
<xs:enumeration value="matricial"/>
<xs:enumeration value="láser"/>
<xs:enumeration value="térmica"/>
<xs:enumeration value="tinta"/>
</xs:restriction>
</xs:simpleType>

Con restriction base especificamos las opciones posibles del tipo de impresoras.

El atributo numSerie es obligatorio y hace de identificador.

Atributo NumSerie:

También podemos aplicar las restricciones dentro del elemento impresora.


<xs:attribute name="numSerie" type="xs:ID" use="required"/>

Especificamos que es un identificador type=”xs:ID” y es obligatorio con


use=”required”.

4
Lenguajes de marcas y sistemas de gestión de información Tarea 04
Alejandro Exposito Revenaque Curso 2023/24

El cartucho está formado por una D mayúscula, tres guiones,


cuatro números y una o dos letras mayúsculas.

Elemento Cartucho:

<xs:simpleType name="numSerieCartucho">
<xs:restriction base="xs:string">
<xs:pattern value="D---\d{4}[A-Z]{1,2}"/>
</xs:restriction>
</xs:simpleType>

Con pattern value especificamos el formato obligatorio del valor a introducir.


Formado por D y tres guiones, \d{4} introducción de 4 dígitos y [A-Z]{1,2} para la
opción de una o dos letras mayúsculas.

Todos los elementos son obligatorios.

Se aplica en todos los elementos minOccurs=”1”, excepto en el elemento en red,


que se aplica minOccurs=”0”.

El elemento enred es opcional. De estar presente, es un elemento


vacío.
<xs:element name="enred" type="xs:empty" minOccurs="0"/>

Se define con el atributo type=”xs:empty”.

El atributo compra, opcional, guarda el año de compra. Es un


número entero positivo.

<xs:simpleType name="añoCompra">
<xs:restriction base="xs:positiveInteger"/>
</xs:simpleType>

<xs:attribute name="compra" type="añoCompra" use="opcional"/>

Definimos el elemento año de compra para especificar que es obligatorio un


numero entero positivo, y dentro del elemento impresora, en el atributo compra,
aplicamos use=”optional”.

5
Lenguajes de marcas y sistemas de gestión de información Tarea 04
Alejandro Exposito Revenaque Curso 2023/24

En cada fichero hay datos para una o más impresoras.

<xs:element name=""impresoras">
<!-- Queremos definirr el elemento impresorars→
<!-- Referenciamos al elemento impresora y pueden existir número
ilimitadas de impresoras-->

<xs:complexType>
<xs:sequence>
<xs:element ref="impresora" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>

</xs:schema>

En el elemento referenciado al elemento impresora aplicamos


maxOccurs=”unbounded”

6
Lenguajes de marcas y sistemas de gestión de información Tarea 04
Alejandro Exposito Revenaque Curso 2023/24
finalmente el archivo se ve así:

También podría gustarte