• No se han encontrado resultados

Extensión de UML para XML Schemas

In document Universidad Rey Juan Carlos (página 85-90)

3.3 Técnicas

3.3.2 Técnicas para XML

3.3.2.2 Extensión de UML para XML Schemas

A continuación, se propone la extensión de UML para representar XML Schemas (esquemas XML) en notación gráfica. Esta extensión de UML define un conjunto de estereotipos, valores etiquetados y restricciones que nos permite representar un XML Schema en notación gráfica de UML. Además se mostrará la representación gráfica de sencillos ejemplos de XML Schemas.

La extensión está definida para los componentes específicos de XML Schema, el actual estándar del W3C. Cada componente de un XML Schema se debe poder representar en notación gráfica con esta extensión de UML, conservando el orden y grado de anidamiento dado.

A la hora de elegir los estereotipos se ha seguido el siguiente criterio:

• Los elementos ELEMENT se han considerado clases estereotipadas porque están explícitamente definidos en el XML Schema.

• Los atributos de un ELEMENT se han considerado atributos estereotipados de las clases que representan al ELEMENT.

• Los tipos complexType se han considerado clases estereotipadas si tienen nombre. En este caso, el tipo complexType estará relacionado con el tipo ELEMENT o el tipo que lo use mediante una asociación <<uses>>. Si no tiene nombre, se representará de forma implícita mediante la composición que forma este tipo.

• Los tipos simpleType se han considerado clases estereotipadas con el mismo nombre que el elemento que los contiene. El tipo simpleType estará relacionado con su padre (ELEMENT) mediante una composición estereotipada con <<simpleType>>.

• Los tipos complexContent se han considerado como clases estereotipadas que deben estar relacionadas mediante una relación de herencia con el tipo padre (un complexType) que se está redefiniendo mediante el tipo complexContent.

• Los tipos simpleContent se han considerado clases estereotipadas que están relacionadas mediante una relación de herencia con el tipo padre (simpleType o complexType) que redefine el tipo simpleContent.

• Los compositors se consideran composiciones (tipo especial de asociación) estereotipadas. Sus estereotipos dependerán del tipo de compositor: <<Choice>>, <<Sequence>> o <<All>>.

• Para cada elemento, tipo o atributo se debe especificar, al lado del nombre de la clase, tipo o atributo el número de orden, incluyendo como un prefijo el número de orden del elemento o tipo padre.

Tipo ELEMENT

Clase del metamodelo: Clase

Descripción: Un tipo <<ELEMENT>> representa un elemento del XML Schema

Icono: ELEMENT

Restricciones: Sólo se puede usar para definir elementos de un XML Schema <<ELEMENT>>.

Valores Etiquetados: El nombre del elemento, el tipo base, el número mínimo y máximo de ocurrencias. Número de orden con un prefijo que será el número de orden del elemento al que pertenece.

<?xml version=“1.0”?>

<!-- File Name: Esquema_Libro.xsd -->

<xsd: schema xmlns:xsd=“http://www.w3.org/2001/XMLSchema”> <xsd:element name=“LIBRO”>

<xsd:complexType> <xsd:sequence>

<xsd:element name=“TITULO” type=“xsd:string”/> <xsd:element name=“AUTOR” type=“xsd:string”/> <xsd:element name=“EDITORIAL” type=“xsd:string”/> <xsd:element name=“PAGINAS” type=“xsd:integer”/> <xsd:element name=“PRECIO” type=“xsd:decimal”/> </xsd:sequence>

<xsd: attribute name=“Disponible” type=“xsd:boolean” use=“required”/> </xsd:complexType> </xsd:element> </xsd:schema> <<ELEMENT>> LIBRO 1 <<ELEMENT>> TÍTULO 1.1 <<ELEMENT>> AUTOR 1.2 <<ELEMENT>> EDITORIAL 1.3 <<ELEMENT>> PÁGINAS 1.4 <<ELEMENT>> PRECIO 1.5

type: string type: string type: string type: integer type: decimal

Valor etiquetado:

número de orden N

Valor etiquetado: tipo base del tipo <<ELEMENT>> Estereotipo <<ELEMENT>>

Atributo

Clase del metamodelo: Atributo

Descripción: Un atributo pertenece a un elemento <<ELEMENT>> del esquema Icono: Ninguno

Restricciones: Un atributo sólo puede pertenecer a un único elemento <<ELEMENT>>. Valores Etiquetados: El nombre del atributo, el tipo base, la restricción que debe satisfacer el atributo (required, optional) y el valor por defecto o fijado previamente. Otro valor etiquetado será su número de orden incluyendo como prefijo el número de orden del elemento al que pertenece el atributo.

Ejemplo:

<<ELEMENT>>

LIBRO

1

Disponible: boolean {required}

Atributo de un ELEMENT 1.6

Tipo ComplexType

Clase del metamodelo: Clase

Descripción: Un tipo <<complexType>> está compuesto por otros elementos u otro compositor.

Icono: cT

Restricciones: Debe estar relacionado por medio de una asociación <<uses>> con los elementos o tipos que usan el tipo <<complexType>>. Sólo se definirá como una clase si tiene nombre, sino se definirá de forma implícita.

Valores Etiquetados: Nombre Ejemplo:

<?xml version=“1.0”?>

<!-- File Name: OrdenCompra.xsd -->

<xsd: schema xmlns:xsd=“http://www.w3.org/2001/XMLSchema”>

<xsd:element name=“OrdenCompra” type=“TipoOrdenCompra”>

<xsd:complexType name= “TipoOrdenCompra”>

<xsd:attribute name=”Fecha_Orden" type="xs:date" /> </xsd:complexType> </xsd:schema> <<ELEMENT>> ORDENCOMPRA 1 <<complexType>> TipoOrdenCompra 1.1 Fecha_Compra: date <<uses>> 1.1.1

Tipo SimpleType

Clase del metamodelo: Clase

Descripción: Un tipo <<simpleType>> no tiene ni subelementos ni atributos.

Icono: sT

Restricciones: Debe estar asociado mediante una asociación <<uses>> con el elemento o atributo que lo usa.

Valores Etiquetados: Tipo base, restricciones del propio tipo base. Ejemplo:

<?xml version=“1.0”?>

<!-- File Name: Esquema_Película.xsd -->

<xsd: schema xmlns:xsd=“http://www.w3.org/2001/XMLSchema”> <xsd:element name=“PELÍCULA”>

<xsd:complexType> <xsd:sequence>

<xsd:element name=“TÍTULO” type=“xsd:string”/> <xsd:element name=“CLASE” <xsd:simpleType> <xsd:restriction base=“xsd:string”> <xsd:enumeration value=“ficción”> <xsd:enumeration value=“documental”> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:choice>

<xsd:element name=“ACTOR” type=“xsd:string”/> <xsd:element name=“DIRECTOR” type=“xsd:string”/> </xsd:choice> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> <<ELEMENT>> PELÍCULA 1 <<ELEMENT>> TÍTULO 1.1 <<ELEMENT>> CLASE 1.2 type: string type: string <<simpleType>> CLASE 1.2.1 enum:{ficción,documental} type: string

Estereotipo para SimpleType

ÖNombre de la clase: Nombre del elemento

<<sequence>>

<<uses>>

Tipo ComplexContent

Clase del metamodelo: Clase

Descripción: Un <<complexContent>> es una subclase del tipo complexType que lo define.

Icono: Ninguno

Restricciones: Debe estar relacionado mediante una relación de herencia con los elementos o tipos <<complexType>> que redefine el tipo <<complexContent>>.

Valores Etiquetados: Nombre

Tipo SimpleContent

Clase del metamodelo: Clase

Descripción: Un <<simpleContent>> es una subclase del tipo <<complexType>> o <<simpleType>>.

Icono: Ninguno

Restricciones: Debe estar relacionado mediante una relación de herencia con el tipo que redefine el tipo <<simpleContent>>.

Asociación Compositor

Clase del metamodelo: Asociación

Descripción: Una asociación compositor es un tipo especial de composición estereotipada con el tipo de compositor <<Choice>>, <<Sequence>> o <<All>>, que indica los elementos que componen al superelemento (padre).

Icono: Ninguno

Restricciones: Sólo se puede usar para unir un <<ELEMENT>> con los <<ELEMENT>>que lo componen.

Valores Etiquetados: Ninguno Ejemplo:

<?xml version=“1.0”?>

<!-- File Name: Esquema_Libro.xsd -->

<xsd: schema xmlns:xsd=“http://www.w3.org/2001/XMLSchema”> <xsd:elementname=“LIBRO”>

<xsd:complexType> <xsd:sequence>

<xsd:element name=“TITULO” type=“xsd:string”/> <xsd:element name=“AUTOR” type=“xsd:string”/> <xsd:element name=“EDITORIAL” type=“xsd:string”/> <xsd:element name=“PAGINAS” type=“xsd:integer”/> <xsd:element name=“PRECIO” type=“xsd:decimal”/> </xsd:sequence>

<xsd: attribute name=“Disponible” type=“xsd:boolean” use=“required”/> </xsd:complexType> </xsd:element> </xsd:schema> <<ELEMENT>> LIBRO 1 <<ELEMENT>> TÍTULO 1.1

Disponible: boolean {required}

<<ELEMENT>> AUTOR 1.2 <<ELEMENT>> EDITORIAL 1.3 <<ELEMENT>> PÁGINAS 1.4 <<ELEMENT>> PRECIO 1.5

type: string type: string type: string type: integer type: decimal

<<sequence>>

Composición estereotipada

Ösecuencia

1.6

Asociación Uses

Clase del metamodelo: Asociación

Descripción: Una asociación <<uses>> es un tipo especial de asociación unidireccional que unirá un tipo <<complexType>> con nombre con el elemento <<ELEMENT>> o tipo que lo usa.

Icono: Ninguno

Restricciones: Sólo se puede usar para unir <<ELEMENT>> o tipos con un complexType con nombre.

Valores Etiquetados: Ninguno Ejemplo:

<?xml version=“1.0”?>

<!-- File Name: Esquema_Película.xsd -->

<xsd: schema xmlns:xsd=“http://www.w3.org/2001/XMLSchema”> <xsd:element name=“PELÍCULA”>

<xsd:complexType> <xsd:sequence>

<xsd:element name=“TÍTULO” type=“xsd:string”/> <xsd:element name=“CLASE” <xsd:simpleType> <xsd:restriction base=“xsd:string”> <xsd:enumeration value=“ficción”> <xsd:enumeration value=“documental”> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:choice>

<xsd:element name=“ACTOR” type=“xsd:string”/> <xsd:element name=“DIRECTOR” type=“xsd:string”/> </xsd:choice> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> <<ELEMENT>> CLASE 1.2 <<simpleType>> CLASE 1.2.1 enum:{ficción,documental} type: string <<uses>>

Reglas que ha de cumplir un diseño bien formado:

• Un tipo <<ELEMENT>> puede contener un conjunto de atributos. • Cada tipo <<complexType>> que tenga nombre tiene que estar

relacionado con el tipo <<ELEMENT>>, el tipo <<complexType>> o el tipo <<simpleType>> que lo usa mediante una asociación <<uses>>.

In document Universidad Rey Juan Carlos (página 85-90)