Esta transformación acepta a un paquete UML como origen y genera un esquema XML convirtiendo las clases apropiadas del paquete en elementos del esquema. El esquema generado se almacena en una carpeta denominada esquema, en un proyecto que especifique como destino de la transformación. El archivo que contiene el esquema tiene el mismo nombre que el paquete y su extensión es .xsd.
Por ejemplo, imagine que tiene un paquete UML denominado Orden de compra que contiene una clase denominada Dirección. Cuando ejecute esta transformación con este paquete como origen, se creará el siguiente esquema XML.
Si escoge un modelo UML (que tenga un paquete como mínimo) como origen, esta transformación genera un esquema XML para cada paquete del modelo que tiene un estereotipo <<XSDProfile::schema>> o una palabra clave schema. La transformación genera un esquema XML para cada paquete, si establece el valor de la propiedad de la transformación, Paquetes no marcados del proceso, en verdadero.
El software hace un paquete con un conjunto de modelos UML de ejemplo que puede utilizar como orígenes para la transformación de UML en XSD. Cuando haya instalado la transformación de UML en XSD, deberá copiar los ejemplos del directorio de instalación en el espacio de trabajo. Por ejemplo, si ha instalado el software en RSA/eclipse, los ejemplos estarán en la carpeta RSA/eclipse/plugins/com.ibm.xtools.transform.samples.uml2.xsd/examples. Haga lo siguiente para copiar los ejemplos en el espacio de trabajo:
NOTA: Al abrir un modelo de ejemplo puede que aparezca un diálogo que indica que el modelo está utilizando una versión antigua del perfil XSD y le pregunta si desea migrar al nuevo perfil. Pulse Sí para migrar a la nueva versión del perfil.
Para ejecutar la transformación:
Opcionalmente, haga lo siguiente:
Estos pasos son necesarios si desea crear un modelo UML de un esquema XML seguro. Para obtener más información sobre el modelado del esquema XML en UML, consulte el apartado Modelado de esquema XML en UML: Buenas prácticas.
La transformación genera el esquema XSD y lo coloca en el proyecto especificado, en una carpeta denominada esquema. Utilice una vista de navegador para inspeccionar el esquema generado.
También puede crear un modelo UML utilizando el modelo de plantilla XSD. Esto tiene la ventaja de que la biblioteca del modelo necesaria, XSDDataTypes, ya está importada y el Perfil XSD se aplica a los paquetes.
La transformación genera el esquema XSD y lo coloca en el proyecto especificado, en una carpeta denominada esquema
. Utilice una vista de navegador para inspeccionar el esquema generado.
Esta transformación acepta un modelo UML que contenga, como mínimo, un paquete o uno o más paquetes UML como origen.
Esta transformación acepta un proyecto como destino.
Esta transformación define las siguientes propiedades de transformación:
Propiedad | Descripción |
Espacio de nombres de destino | Espacio de nombres de destino del esquema generado por la transformación. El valor de esta propiedad es una cadena de caracteres, por ejemplo, http://www.ibm.com/SampleXSDTransformation. |
Prefijo del espacio de nombres de destino | Prefijo para el espacio de nombres de destino del esquema generado por la transformación. El valor de esta propiedad es una cadena de caracteres, por ejemplo, sxt. |
Procesar clase UML sin estereotipo o palabra clave |
Esta propiedad determina si la transformación procesa una clase UML si la clase no tiene ningún estereotipo o palabra clave asociada. El valor de esta propiedad puede ser verdadero o falso. Por omisión, su valor está establecido en verdadero y la transformación procesa todas las clases de un paquete de nivel superior. (Actualmente, la transformación no maneja paquetes anidados.) Si no necesita aplicar la transformación a todas las clases de un paquete, debe establecer su valor en falso y aplicar los estereotipos adecuados del Perfil XSD o palabras clave a las clases que desea transformar. |
Procesar paquete UML sin estereotipo o palabra clave |
Esta propiedad determina si la transformación procesa un paquete UML si el paquete no tiene ningún estereotipo o palabra clave asociada. El valor de esta propiedad puede ser verdadero o falso. Por omisión, su valor está establecido en verdadero y la transformación procesa todos los paquetes de nivel superior. (Actualmente, la transformación no maneja paquetes anidados.) Si no necesita aplicar la transformación a todos los paquetes de nivel superior de un modelo, debe establecer su valor en falso y aplicar el estereotipo adecuado <<esquema>> del Perfil XSD o la palabra clave esquema a los paquetes que desea transformar. |
Convertir una clase anidada en tipo anónimo implícitamente |
Esta propiedad determina si la transformación convierte una clase anidada en un tipo anónimo cuando no hay una asociación explícita entre la clase de anidación y la clase anidada. El valor de esta propiedad puede ser verdadero o falso. Por omisión, su valor está establecido en falso y la transformación convierte una clase anidada en un tipo anónimo sólo si tiene una asociación de la clase de anidación. Si su valor está establecido en verdadero, todas las clases anidadas se convierten en tipos anónimos con los tipos XSD correspondientes a las clases anidadas que contienen elementos cuyos tipos son estos tipos anónimos. La generación de tipos anónimos implícitamente estableciendo el valor de su propiedad en verdadero tiene varias limitaciones y, por lo tanto, es recomendable utilizarlo muy ocasionalmente. |
El modelado de un esquema XML seguro en UML que la transformación de UML en XSD soporte utiliza un pequeño subconjunto de construcciones UML para representar los elementos del esquema XML. Este subconjunto incluye los siguientes elementos de UML: clase, propiedad, generalización, asociación y dependencia. Para representar los elementos del esquema XML, por ejemplo, tipo simple, tipo completo, atributo y elemento, grupos reutilizables, etc. utilizando este subconjunto, debe aplicar el Perfil XSD al modelo UML de origen y marcarlo con estereotipos de este perfil y establecer las propiedades de los estereotipos en valores apropiados.
El siguiente diagrama de clase muestra el modelo UML del perfil XSD.
La tabla que sigue describe los estereotipos y sus propiedades.
Estereotipo | Extensión de metaclase | Propiedades | Comentarios |
annotation | Comment |
kind language source |
El comentario se convierte en información de la aplicación o en una anotación de documentación. La propiedad kind determina el tipo de anotación: documentation y appinfo. Las propiedades language y source especifican el lenguaje natural de la documentación y el origen de más documentación respectivamente. |
attribute | Property (de clase) |
form use |
La propiedad de UML se convierte en un atributo en un tipo complejo o en un grupo de atributos si es de tipo simple y su multiplicidad es [0..1]. La propiedad de estereotipo form determina si el nombre de atributo debe ser calificado en el documento de instancia. Su valor puede ser uno de los siguientes qualified unqualified, o default. Si es default, el valor toma como valor por omisión attributeFormDefault de schema, que toma como valor por omisión unqualified. La propiedad use determina si el atributo es opcional u obligatorio. Su valor puede ser uno de los siguientes optional, prohibited o required. Por omisión, su valor es optional. El valor prohibited se omite en la implementación actual. |
attributeGroup | Class | La clase se convierte en un grupo de atributos. | |
complexType | Class |
anonymous block final modelGroup maxOccurs minOccurs mixed |
La clase se convierte en un tipo complejo. La propiedad anónimo determina si se crea una declaración de tipo complejo de nivel superior en el esquema. Su valor puede ser verdadero o falso. Si es verdadero, no se genera ninguna declaración de tipo ni se convierte ninguna referencia a esta clase en una declaración de atributo o elemento con el tipo anónimo como tipo del atributo o el elemento. Por omisión, su valor es falso. La propiedad block determina si se debe bloquear la sustitución de tipos. Puede tener uno de los siguientes valores: #all, extension o restriction o una separada por espacios en blanco de extension y restriction. El valor #all evita todos los tipos derivados de la sustitución de este tipo, extension evita las extensiones de este tipo a partir de la sustitución para este tipo, y restriction evita las restricciones de este tipo a partir de la sustitución para este tipo. La lista, "extension restriction", tiene el mismo efecto que #all. Si no se especifica la propiedad block, el valor pasa a ser por omisión la propiedad blockDefault de schema. La propiedad final determina si se pueden derivar otros tipos de este. Su valor puede ser #all o una lista de (extension o restriction). Si su valor es #all, se inhabilita la derivación de cualquier tipo. Para un control más específico, el valor se puede establecer en una lista separada por espacios en blanco de cualquiera de las palabras clave restriction o extension . Por omisión es finalDefault de schema. La propiedad modelGroup determina el modelo de contenido del tipo. El valor de modelGroup puede ser all, choice o sequence. El valor por omisión es sequence. Restricción: Si el valor de modelGroup es all, el valor de anonymous debe establecerse en false. De lo contrario, puede producirse una infracción de la restricción. Los valores de minOccurs y maxOccurs determina el número máximo y mínimo de veces que se puede producir sequence o el grupo choice en el tipo complejo. Para un grupo de modelo all, maxOccurs debe ser 1 y minOccurs puede ser sólo 0 o 1. La propiedad boolean mixed especifica si el tipo complejo admite contenido mixto. Por omisión, su valor es falso. |
element | Property (de clase) |
block final form nillable |
La propiedad se convierte en un elemento. La propiedad final sólo se aplica a los elementos globales y no a elementos locales. Determina si se pueden derivar otros tipos de este. Su valor puede ser #all o una lista de (extension | restriction). Si su valor es #all, se inhabilita la derivación de cualquier tipo. Para un control más específico, el valor se puede establecer en una lista separada por espacios en blanco de cualquiera de las palabras clave restriction o extension . Por omisión es finalDefault de schema. La propiedad de estereotipo form determina si el nombre de elemento debe ser calificado en el documento de instancia. Su valor puede ser uno de los siguientes qualified unqualified, o default. Si es default, el valor toma como valor por omisión elementFormDefault de schema, que toma como valor por omisión unqualified. La propiedad boolean nillable determina si se puede utilizar xsi:nil en la instancia para este elemento. Por omisión, su valor es falso. |
enumeration | Class | anonymous |
La clase se convierte en una enumeración XSD si tiene una relación de generalización con otra clase que representa un tipo simple. La propiedad anonymous determina si se crea la declaración de tipo simple de nivel superior con facetas superiores en el esquema. Su valor puede ser verdadero o falso. Si es verdadero, no se genera ninguna declaración de tipo ni se convierte ninguna referencia a esta clase en una declaración de atributo o elemento con el tipo anónimo como tipo del atributo o el elemento. Por omisión, su valor es falso. |
global | Class | |
Una clase con este estereotipo se convierte en una declaración de atributo o elemento de nivel superior. La clase sólo debe tener una propiedad. Si la propiedad tiene un estereotipo o palabra clave <<attribute>>, la clase se convierte en un atributo de nivel superior. De lo contrario, se convierte en un elemento de nivel superior. El nombre del elemento o el atributo es el mismo que el de la propiedad y el tipo es el de la propiedad. |
listOf | Dependency | El cliente de la dependencia se convierte en una lista XSD cuyo tipo de elemento es el proveedor de la dependencia. Sólo puede existir una dependencia de este tipo entre dos clases que representan un tipo simple. | |
modelGroup | Class |
anonymous modelGroup |
La clase se convierte en un grupo de modelo reutilizable con un modelo de contenido sequence. La propiedad anónimo determina si se crea una declaración de grupo de nivel superior en el esquema. Su valor puede ser verdadero o falso. Si es verdadero, no se genera ninguna declaración de grupo. Cualquier referencia a esta clase se convierte en un grupo de modelos anidados. Si el valor es falso, una referencia a la clase se convierte en una referencia de grupo de modelos. Por omisión, su valor es falso. La propiedad modelGroup determina el modelo de contenido del grupo. El valor de modelGroup puede ser all, choice o sequence. El valor por omisión es sequence. Restricción : Si el valor de modelGroup es all, el valor de anónimo debe establecerse en false. De lo contrario, puede producirse una infracción de la restricción. |
schema | Package |
attributeFormDefault blockDefault elementFormDefault finalDefault targetNamespace targetNamespacePrefix |
El paquete y su contenido se convierten en un esquema XSD. El nombre del paquete pasa a ser el nombre del esquema (archivo). La propiedad attributeFormDefault especifica si las declaraciones de atributos locales deben utilizar nombres calificados. Su valor puede ser qualified o unqualified. El valor por omisión es unqualified. La propiedad blockDefault establece el valor por omisión para el atributo block que se utiliza en el tipo complejo y las declaraciones de elemento. El atributo block determina si se debe bloquear la sustitución de elementos o la sustitución de tipos. Puede tener los valores siguientes: #all o una lista separada por espacios en blanco de uno o varios de los siguientes (extension, restriction o substitution).
La propiedad elementFormDefault especifica si las declaraciones de elementos locales deben utilizar nombres calificados.
Su valor puede ser
qualified o
unqualified.
El valor por omisión es unqualified.
La propiedad finalDefault establece el valor por omisión para el atributo final que se utiliza en el tipo complejo, el tipo simple y las declaraciones de elemento. El atributo final determina si se debe impedir la derivación de tipos. Puede tener los valores siguientes: #all o una lista separada por espacios en blanco de (extension, restriction, substitution, list o union). Si establece los valores de targetNamespace y targetNamespacePrefix, estos valores sobrescribirán los que haya establecido para las propiedades de transformación correspondientes, Target Namespace y Target Namespace Prefix respectivamente. |
simpleType | Class |
anonymous final fractionDigits length maxExclusive maxInclusive maxLength minExclusive minInclusive minLength pattern totalDigits whiteSpace |
La clase se convierte en un tipo simple si tiene una generalización con un tipo de datos XSD incorporados, otro tipo simple o un tipo de enumeración XSD. El valor de la propiedad anonymous puede ser verdadero o falso. Si es verdadero, la clase se trata como un tipo anónimo y no se genera ninguna declaración de tipos de nivel superior. La propiedad final determina si se pueden derivar otros tipos de este. Su valor puede ser #all o una lista de (extension, restriction, list o union). Si su valor es #all, se inhabilita la derivación de cualquier tipo. Para un control más específico, el valor se puede establecer en una lista separada por espacios en blanco de cualquiera de las palabras clave restriction, extension, list o union. El resto de las propiedades representan la facetas que define el esquema XSD. Mediante estas facetas, puede especificar un rango válido de valores, restringir la longitud y la precisión de valores, especificar una expresión regular con la que deben coincidir los valores válidos o especificar el proceso de espacios en blanco de los tipos simples que se derivan por restricción de los tipos XSD incorporados. Para obtener más detalles, consulte la tabla Significado de las facetas. Tenga en cuenta que no todas las facetas son aplicables a todos los tipos simples. Por ejemplo, para los tipos simples que se derivan de string, normalizedString y token, las facetas aplicables son length, minLength, maxLength, pattern y whitespace. Para obtener más detalles, consulte la tabla Tipos simples y facetas aplicables. |
unionOf | Dependency | El cliente de la dependencia se convierte en una unión XSD con el proveedor de la dependencia como uno de sus miembros. Una clase que representa a un tipo simple puede tener más de una dependencia de este tipo con clases (tipo simple) diferentes. | |
wildcard | Property (de clase) | processContents namespace |
La propiedad de UML se convierte en un comodín del elemento. Si la propiedad tiene la palabra clave attribute o el estereotipo <<attribute>>, además de wildcard, se convierte en un comodín del atributo. La propiedad processContents determina la rigurosidad con que se deben validar los atributos o elementos de sustitución. Si es omitir, el procesador del esquema no realiza validaciones. Si es laxo, el procesador del esquema validará atributos o elementos para los cuales pueda encontrar declaraciones y plantear errores, si no son válidos. Si es estricto, el procesador del esquema tratará de encontrar un documento de esquema asociado al espacio de nombres y validar todos los atributos o elementos. Por omisión, su valor se establece en estricto. La propiedad namespace especifica el espacio de nombres en el que estarán los elementos o atributos de sustitución. El valor permitido es uno de estos (##any, ##other, list of anyURI, ##targetNamespace o ##local). Si es ##any, los atributos o elementos de sustitución pueden estar en cualquier espacio de nombres, o no estar en ningún espacio de nombres. Si es ##other, los atributos o elementos de sustitución pueden estar en cualquier espacio de nombres distinto al espacio de nombres de destino del documento, pero deben estar en un espacio de nombres. Si el documento de esquema no tiene espacio de nombres de destino, los atributos o elementos de sustitución pueden tener cualquier espacio de nombres, pero deben tener uno. De lo contrario, puede ser una lista de valores separados por espacios en blanco que incluye algunos o todos los elementos siguientes: ##targetNamespace, #local o espacios de nombres específicos. ##targetNamespace indica que los elementos o atributos de sustitución deben estar en el espacio de nombres de destino del documento de esquema y ##local indica que los elementos o atributos de sustitución no deben estar en ningún espacio de nombres. |
Si el esquema que está modelando no necesita especificar los elementos en detalle, es recomendable utilizar las palabras clave en lugar de los estereotipos. En la siguiente tabla se describen las palabras clave que soporta la transformación de UML en XSD.
Palabra clave | Aplicable a elemento de UML | Comentarios |
annotation | Comment | El comentario se convierte en una anotación "appinfo" o "documentation". |
attribute | Property (de Clase) | La propiedad se convierte en un atributo de un tipo complejo si la multiplicidad de la propiedad es [0..1]. |
attributeGroup | Class | La clase se convierte en un grupo de atributos. |
complexType | Class | La clase se convierte en un tipo complejo. |
element | Property | La propiedad se convierte en un elemento de un tipo complejo. |
enumeration | Class | La clase se convierte en una enumeración XSD si tiene una relación de generalización con otra clase que representa un tipo simple. |
global | Class |
Una clase con esta palabra clave se convierte en una declaración de atributo o elemento de nivel superior. La clase sólo debe tener una propiedad. Si la propiedad tiene un estereotipo <<attribute>> o una palabra clave attribute, la clase se convierte en un atributo de nivel superior. De lo contrario, se convierte en un elemento de nivel superior. El nombre del elemento o el atributo se deriva del nombre de la propiedad y el tipo se deriva del tipo de la propiedad. |
listOf | Dependencia entre dos clases que representan dos tipos simples | El cliente de la dependencia se convierte en una lista XSD cuyo tipo de elemento es el proveedor de la dependencia. Sólo puede existir una dependencia de este tipo entre dos clases que representan un tipo simple. |
modelGroup | Class | La clase se convierte en un grupo de modelo reutilizable con un modelo de contenido sequence. |
schema | Package |
El paquete y su contenido se convierten en un esquema XSD. El nombre del paquete pasa a ser el nombre del esquema (archivo). Si utiliza la palabra clave schema, debe especificar el espacio de nombres de destino y el prefijo de espacio de nombres de destino estableciendo las propiedades de transformación, Target Namespace y Target Namespace Prefix respectivamente, en los valores apropiados. |
simpleType | Class | La clase se convierte en un tipo simple si tiene una generalización con un tipo de datos XSD incorporados u otro tipo simple. |
unionOf | Dependencia entre dos clases que representan dos tipos simples | El cliente de la dependencia se convierte en una unión XSD con el proveedor de la dependencia como uno de sus miembros. Una clase que representa a un tipo simple puede tener más de una dependencia de este tipo con clases (tipo simple) diferentes. |
wildcard | Property |
La propiedad de UML se convierte en un comodín del elemento. Si la propiedad tiene la palabra clave attribute, además de wildcard, se convierte en un comodín del atributo. |
Se incorporan cuarenta y cuatro tipos simples en la recomendación del esquema XML. Estos tipos simples representan tipos de datos comunes como cadenas de caracteres, números, valores de fecha y hora, además de tipos de herencia para los tipos de atributo en XML 1.0. XSD también proporciona doce facetas de restricción que puede utilizar para especificar un rango de valores válido de los tipos simples, restringir la longitud y la precisión de sus valores, enumerar una lista de valores válidos o especificar una expresión regular con la que deben coincidir los valores válidos.
Puede derivar tipos simples nuevos de los tipos incorporados u otros tipos simples restringiéndolos mediante el establecimiento de las facetas en los valores adecuados. Para ello, es necesario tener la representación de los tipos incorporados disponible en los modelos UML.
Los tipos simples incorporados se modelan como clases y pasan a estar disponibles en una biblioteca de modelo denominada XSDDataTypes. Debe importar la biblioteca XSDDataTypes en el modelo para acceder a estos tipos. Para importar la biblioteca de modelo XSDDataTypes en Explorador de modelos, pulse el botón derecho del ratón sobre la raíz del modelo (el mismo modelo), seleccione Importar biblioteca de modelo... y escoja XSDDataTypes en la lista desplegable.
Para definir tipos simples nuevos (tipos simples definidos por el usuario) debe especificarlos desde las clases adecuadas del modelo XSDDataTypes y utilizar las propiedades del estereotipo <<simpleType>> para restringir el valor de los tipos definidos. Por ejemplo:
Puede restringir el valor máximo de Quantity en, por ejemplo, 100 estableciendo la propiedad maxInclusive de <<simpleType>> en 100.
El objetivo del modelado del esquema XML en UML es crear una representación visual de un esquema XML y, a continuación, generar el esquema utilizando una transformación de UML en XSD. El análisis muestra que la mayoría de las funciones fundamentales del esquema XML se pueden representar mediante elementos de modelo UML. La tabla siguiente muestra un subconjunto de la correlación entre los conceptos presentes en UML y los conceptos correspondientes en la definición de esquema XML (XSD).
Conceptos de UML | Conceptos del esquema XML |
Paquete | Espacio de nombres único con un prefijo |
Clase | Tipos y grupos reutilizables
|
Enumeración | Restricción de un tipo simple de cadena de caracteres XSD con facetas de enumeración iguales a los literales de enumeración UML. Tenga en cuenta que lo que sucede con una clase UML que tiene el estereotipo <<enumeration>> del perfil XSD aplicado es diferente. La utilización de una clase UML estereotipada permite enumeraciones XSD más generales. |
Propiedades de una clase | Elementos y atributos de un tipo complejo |
Asociación (Agregación) | Elemento hijo de un elemento contenido (tipo complejo) |
Generalización | Derivación de tipos
|
Identidad del objeto | Campos de clave especificados por el usuario o mecanismo de identidades explícito (todavía no se ha implementado). |
Elemento de UML | Elemento XSD | Comentarios |
Paquete con estereotipo <<schema>> | Esquema con un espacio de nombres de destino y un prefijo de espacio de nombres de destino | El contenido de un paquete convierte un esquema en un archivo .xsd. El nombre del archivo del esquema es el mismo que el del paquete. Las propiedades del estereotipo <<schema>>, attributeFormDefault y elementFormDefault, se pueden utilizar para especificar los atributos attributeFormDefault y elementFormDefault del esquema generado. Si utiliza la palabra clave schema, en lugar del estereotipo, debe proporcionar el espacio de nombres de destino y su prefijo estableciendo los valores de las propiedades de transformación, Target Namespace y Target Namespace Prefix respectivamente. |
Elemento de UML | Elemento XSD | Comentarios |
Clase con estereotipo <<complexType>> | Tipo complejo | Si la propiedad del estereotipo, modelGroup, no se establece en uno de los valores posibles, all choice o sequence, el tipo complejo se genera con un grupo de modelos sequence. |
Clase con palabra clave complexType | Tipo complejo | El tipo complejo se genera con un grupo de modelos sequence. |
Clase sin palabra clave o estereotipo | Tipo complejo | Un tipo complejo sólo se genera si el valor de la propiedad de transformación Process unmarked class está establecido en verdadero. De lo contrario, la clase se omite. Si se genera un tipo complejo, su grupo de modelos se establece en sequence. |
Propiedad | Elemento del tipo complejo | |
Propiedad con estereotipo <<attribute>> o palabra clave attribute. | Atributo del tipo complejo |
La propiedad sólo se convierte en un atributo si el tipo de la propiedad es un tipo simple y tiene una multiplicidad de [0..1]. De lo contrario, se convierte en un elemento. Si proporciona un valor por omisión, la propiedad se convierte en un atributo opcional con un valor por omisión. Si convierte la propiedad en de sólo lectura y proporciona un valor por omisión, se convierte en un atributo con el valor fijo por omisión. En ambos casos, debe establecer la multiplicidad de la propiedad en [0..1]. Puede utilizar la propiedad use del estereotipo <<attribute>> para que el atributo sea opcional u obligatorio. Si establece el valor de use en required, además de proporcionar un valor por omisión y pasar la propiedad a sólo lectura, el valor por omisión y la especificación de sólo lectura se omitirán. |
Elemento de UML | Elemento XSD | Comentarios |
Una clase con un estereotipo <<global>> o una palabra clave "global" que contiene una propiedad. | Elemento o atributo global (de nivel superior). |
La clase sólo debe tener una propiedad. Si la propiedad tiene un estereotipo <<attribute>> o una palabra clave attribute, la clase se convierte en un atributo de nivel superior. De lo contrario, se convierte en un elemento de nivel superior. El nombre del elemento o el atributo se deriva del nombre de la propiedad y el tipo se deriva del tipo de la propiedad. |
Elemento de UML | Elemento XSD | Comentarios |
Relaciones de generalización entre clases que tienen el estereotipo <<global>> aplicado. | Un grupo de sustitución compuesto de elementos globales representados por las clases con estereotipos <<global>>. | Para formar un grupo de sustitución de elementos globales, sus tipos (clases) deben estar en una relación de generalización equivalente. |
En el ejemplo que sigue, el elemento global vestido es el principal del grupo de sustitución y los elementos globales, camisa y pantalón, son los miembros. Recuerde que los tipos de estos elementos están en una relación de generalización que es equivalente a la relación de generalización entre los elementos globales.
Elemento de UML | Elemento XSD | Comentarios |
Clase con un estereotipo <<simpleType>> o una palabra clave simpleType |
Tipo simple definido por el usuario. Restricción de un tipo simple incorporado o de otro tipo simple definido por el usuario. |
Debe tener una relación de generalización con un tipo simple incorporado o con otro tipo simple definido por el usuario o un tipo de enumeración XSD. |
Elemento de UML | Elemento XSD | Comentarios |
Clase con estereotipo <<enumeration>> o palabra clave enumeration | Enumeración XSD. Un tipo simple con una faceta de enumeración especificada. |
Debe tener una relación de generalización con un tipo simple incorporado o con otro tipo simple definido por el usuario. |
Elemento de UML | Elemento XSD | Comentarios |
Enumeración UML | Enumeración XSD, un tipo simple con base de restricción xsd:string y una faceta de enumeración especificada | No necesita ninguna generalización con otro tipo simple. |
Elemento de UML | Elemento XSD | Comentarios |
Clase con estereotipo <<modelGroup>> | Grupo de modelos con nombre | Si la propiedad del estereotipo, modelGroup, no se establece en uno de los valores posibles, all, choice o sequence, el grupo de modelos se genera con un grupo de modelos sequence. |
Clase con palabra clave modelGroup | Grupo de modelos con nombre | El grupo de modelos con nombre se genera con un grupo de modelos sequence. |
Clase con estereotipo <<attributeGroup>> o con palabra clave attributeGroup | Grupo de atributos | Cada propiedad de la clase se convierte en un miembro del grupo de atributos, siempre que sea de un tipo que se pueda convertir en un tipo simple y tenga una multiplicidad [0..1].
De lo contrario, la propiedad se omite. Dado que las propiedades sólo se pueden convertir en atributos XSD, no es estrictamente necesario aplicar el estereotipo <<attribute>> a las propiedades. Sin embargo, si desea especificar propiedades adicionales (como required, form, etc.) para los atributos, debe aplicar el estereotipo <<attribute>> y establecer las propiedades del estereotipo en los valores adecuados. |
Elemento de UML | Elemento XSD | Comentarios |
La clase A deriva de otra clase B. | Un tipo complejo B que es una extensión de contenido compleja del tipo complejo A. |
La clase A o clase B pueden tener un estereotipo <<complexType>> o palabra clave complexType. Ni la clase A ni la B pueden tener un grupo de modelos "all" o un modelo de contenido. El intento de ampliar las clases con grupos de modelos "all" lleva a la infracción de la restricción. La clase B no puede tener el estereotipo <<modelGroup>> o <<attributeGroup>> ni una palabra clave modelGroup o attributeGroup. Es decir, un tipo complejo no puede ampliar un grupo de modelos o un grupo de atributos. |
La clase A deriva de otra clase B con un estereotipo <<simpleType>> o una palabra clave simpleType. |
Un tipo complejo B que es una extensión de contenido simple de un tipo simple. Todas las propiedades de la clase B pasan a ser un atributo de la extensión de contenido simple. |
El único objetivo de derivar de un tipo simple es añadir atributos. Por lo tanto, el tipo de una propiedad de clase B debe ser un tipo simple y su multiplicidad debe ser [0..1]. De lo contrario, el modelo infringirá la restricción. |
Elemento de UML | Elemento XSD | Comentarios |
Asociación (agregación de compuestos o dirigida) Clase A -> Clase B | Elemento en tipo complejo A de tipo complejo B | El nombre de elemento viene determinado por el nombre de rol del final de la asociación. |
Elemento de UML | Elemento XSD | Comentarios |
La clase A contiene una o más propiedades del tipo de clase B | Elemento en tipo complejo A de tipo complejo B | El nombre de elemento viene determinado por el nombre de la propiedad. |
Elemento de UML | Elemento XSD | Comentarios |
Asociación (asociación dirigida o agregación de compuestos) de la Clase A a la Clase B con un estereotipo <<modelGroup>>. Clase A -> Clase C con estereotipo <<attributeGroup>>. |
Referencia de grupo de modelos en tipo complejo A. Referencia de grupo de atributos en tipo complejo A. |
|
Asociación (asociación dirigida o agregación de compuestos) de Clase A con estereotipo <<modelGroup>> a Clase B también con estereotipo <<modelGroup>> | Una referencia de grupo de modelos en el grupo de modelos representada por la Clase A | |
Asociación (asociación dirigida o agregación de compuestos) de Clase A con estereotipo <<attributeGroup>> a Clase B también con estereotipo <<attributeGroup>> | Una referencia de grupo de atributos en el grupo de atributos representada por la Clase A. |
Elemento de UML | Elemento XSD | Comentarios |
Dependencia con un estereotipo <<listOf>> o una palabra clave listOf entre dos tipos simples | Tipo de lista. El cliente de la dependencia se convierte en un tipo simple que es una lista del proveedor de la dependencia |
El cliente y el proveedor de la dependencia deben ser de tipo simple y sólo debe existir una dependencia <<listOf>> entre ellos. No debe existir ninguna otra relación entre estas dos clases. |
Dependencia con un estereotipo <<unionOf>> o una palabra clave unionOf entre un tipo simple de cliente y uno o más proveedores | Tipo de unión.
El cliente de la dependencia se convierte en un tipo simple que es una unión de los proveedores de la dependencia. |
El cliente y los suministradores de la dependencia deben ser de tipo simple y pueden haber una o más dependencias <<unionOf>> entre ellos. No debe existir ninguna otra relación entre estas clases. |
Elemento de UML | Elemento XSD | Comentarios |
Clase A con un estereotipo <<complexType>> y una propiedad de estereotipo anonymous = verdadero y a la que hace referencia otra clase B que representa un tipo complejo. |
La clase A se convierte en un tipo complejo anónimo. La referencia se convierte en un atributo o elemento del tipo complejo (representado por la clase B). El tipo de elemento o atributo se define por este tipo anónimo. |
El nombre de elemento o atributo viene determinado por el nombre de rol del final de la asociación o el nombre de propiedad. Dado que la clase A se especifica como anónima, no se genera ninguna declaración de tipo complejo de nivel superior para esta clase. |
Elemento de UML | Elemento XSD | Comentarios |
Clase A con un estereotipo <<simpleType>> y una propiedad de estereotipo anonymous = verdadero y a la que hace referencia otra clase B que representa un tipo complejo. |
La clase A se convierte en un tipo simple anónimo. La referencia se convierte en un atributo o elemento del tipo complejo (representado por la clase B). El tipo de elemento o atributo se define por este tipo anónimo. |
El nombre de elemento o atributo viene determinado por el nombre de rol del final de la asociación o el nombre de propiedad. Dado que la clase A se especifica como anónima, no se genera ninguna declaración de tipo simple de nivel superior para esta clase. |
Elemento de UML | Elemento XSD | Comentarios |
Clase A con un estereotipo <<enumeration>> y una propiedad de estereotipo anonymous = verdadero y a la que hace referencia otra clase B que representa un tipo complejo. |
La clase A se convierte en una enumeración anónima. La referencia se convierte en un atributo o elemento del tipo complejo (representado por la clase B). El tipo de elemento o atributo se define por este tipo anónimo. |
El nombre de elemento o atributo viene determinado por el nombre de rol del final de la asociación o el nombre de propiedad. Dado que la clase A se especifica como anónima, no se genera ninguna declaración de tipo simple de nivel superior con faceta de enumeración para esta clase. |
Elemento de UML | Elemento XSD | Comentarios |
Asociación (agregación de compuestos o dirigida) entre una clase A y una clase B con un estereotipo <<modelGroup>> y el valor de propiedad anonymous = verdadero. |
Un tipo complejo que representa a la clase A que contiene el grupo de modelos del grupo de modelos con nombre representado por la clase B. |
Esta correlación sólo es válida si ni A ni B tienen un modelo de contenido all. |
Asociación (agregación de compuestos o dirigida) entre una clase A con un estereotipo <<modelGroup>> y una clase B con un estereotipo <<modelGroup>> y el valor de propiedad anonymous = verdadero. | Un grupo de modelos con nombre que representa la clase A que contiene el grupo de modelos del grupo de modelos con nombre representado por la clase B. | Esta correlación sólo es válida si ni A ni B tienen un modelo de contenido all. |
La referencia anterior a grupos de modelos también se puede modelar utilizando propiedades de clase.
Elemento de UML | Elemento XSD | Comentarios |
Clase A que contiene una propiedad cuyo tipo es clase B con un estereotipo <<modelGroup>> y el valor de propiedad anonymous = verdadero. | Un tipo complejo que representa a la clase A que contiene el grupo de modelos del grupo de modelos con nombre representado por la clase B. | Esta correlación sólo es válida si ni A ni B tienen un modelo de contenido all. |
Clase A con un estereotipo <<modelGroup>> que contiene una propiedad cuyo tipo es clase B con un estereotipo <<modelGroup>> y el valor de propiedad anonymous = verdadero. | Un grupo de modelos con nombre que representa la clase A que contiene el grupo de modelos del grupo de modelos con nombre representado por la clase B. | Esta correlación sólo es válida si ni A ni B tienen un modelo de contenido all. |
Elemento de UML | Elemento XSD | Comentarios |
Clase A que contiene una clase B anidada con una asociación entre A y B. | Elemento del tipo complejo A de un tipo anónimo B. |
Debe existir una asociación entre la clase de anidación y la clase anidada. Si la clase A contiene una propiedad de tipo B en lugar de una asociación, se obtiene el mismo componente de esquema. |
Elemento de UML | Elemento XSD | Comentarios |
Clase A que contiene una clase B anidada con un estereotipo <<simpleType>> o una palabra clave, simpleType, y que tiene una asociación entre A y B. | Elemento del tipo complejo A de un tipo simple anónimo B. |
Debe existir una asociación entre la clase de anidación y la clase anidada. Si la clase A contiene una propiedad de tipo B en lugar de una asociación, se obtiene el mismo componente de esquema. |
Elemento de UML | Elemento XSD | Comentarios |
Comentario | Anotación | Un comentario de un elemento de UML se convierte en una anotación de documentación de XSD. |
Comentario con estereotipo <<annotation>> |
Anotación | El tipo de anotación, documentation o appinfo , depende del valor de la propiedad kind del estereotipo <<annotation>> . Si el valor de kind
es A, se crea un elemento documentación ; si el valor de kind
es documentación . Se crea un elemento appinfo
si el valor es información de aplicación .
El valor por omisión de clase
es documentación . |
Elemento de UML | Elemento XSD | Comentarios |
Propiedad con un estereotipo <<wildcard>> o palabra clave wildcard . |
Comodín del elemento en el tipo complejo envolvente o un grupo de modelos | Los espacios de nombres en los que pueden estar los elementos de sustitución y la rigurosidad con la que se deben validar las sustituciones vienen determinados por las propiedades namespace y processContents del estereotipo <<wildcard>> . |
Elemento de UML | Elemento XSD | Comentarios |
Propiedad con los estereotipos <<attribute>> y <<wildcard>> o las palabras clave attribute y wildcard. |
Comodín del atributo en el tipo complejo envolvente o un grupo de atributos | Los espacios de nombres en los que pueden estar los atributos de sustitución y la rigurosidad con la que se deben validar los atributos de sustitución vienen determinados por las propiedades namespace y processContents del estereotipo <<wildcard>> . |
El objetivo del modelado del esquema XML en UML es crear una representación visual de un esquema XML y, a continuación, generar el esquema utilizando una transformación de UML en XSD. Normalmente, el modelo tendrá elementos que representan a elementos XSD y a elementos que no están relacionados con XSD. Es recomendable tener en cuenta estas directrices cuando se crea un modelo de este tipo.
Esta transformación todavía no ha implementado las reglas para generar los siguientes elementos XSD:
Facetas | Significado |
fractionDigits | el número de dígitos fraccionario debe ser menor o igual que x |
length | la longitud del valor debe ser x |
maxExclusive | el valor debe ser menor que x |
maxInclusive | el valor debe ser menor o igual que x |
maxLength | la longitud del valor debe ser menor o igual que x |
minExclusive | el valor debe ser mayor que x |
minInclusive | el valor debe ser mayor o igual que x |
minLength | la longitud del valor debe ser mayor o igual que x |
pattern | x es una de las expresiones regulares con las que puede coincidir el valor |
totalDigits | el número de dígitos significantes debe ser menor o igual que x |
whitespace | el procesador del esquema debe conservar, reemplazar o contraer el espacio en blanco en función de x |
En la siguiente tabla se enumeran los tipos de datos incorporados y las facetas aplicables. Tenga en cuenta que aunque la recomendación W3C define enumeration como una faceta, no hemos incluido enumeration en la tabla. Representamos enumeration utilizando una clase con estereotipo <<enumeration>> o utilizando la enumeración UML.
Tipos de datos (base de restricción) | Facetas aplicables |
ENTITY, ID, IDREF |
length, maxlength, minlength whitespace está fijado en un valor collapse pattern es [\i-[:]][\c-[:]]* |
IDREFS |
length, maxlength, pattern minlength es 1 whitespace está fijado en un valor collapse |
Name |
length, maxlength, minlength whitespace es collapse pattern es \i\c* |
NCName |
length, maxlength, minlength whitespace es collapse pattern es [\i-[:]][\c-[:]]* |
NMTOKEN |
length, maxlength, minlength whitespace está fijado en un valor de collapse pattern es \c+ |
NMTOKENS |
length, maxlength minlength es 1 whitespace está fijado en un valor de collapse |
NOTATION |
length, maxlength, minlength, pattern whitespace está fijado en un valor de collapse |
QNAME |
length, maxlength, minlength, pattern whitespace está fijado en un valor de collapse |
anyURI, base64Binary, hexBinary |
length, maxlength, minlength, pattern whitespace está fijado en un valor de collapse |
language |
length, maxlength, minlength whitespace es collapse pattern es ([a-zA-Z]{2}|[iI]-[a-zA-Z]+|[xX]-[a-zA-Z]{1,8})(-[a-zA-Z]{1,8})* |
float, double |
maxExclusive, maxInclusive, minExclusive, minExclusive, pattern whitespace se fija para tener un valor collapse |
decimal | maxExclusive, maxInclusive, minExclusive, minExclusive, fractionDigits, totalDigits, pattern whitespace está fijado para tener un valor collapse |
Tipos de datos de enteros (integer,
byte, int, long, negativeInteger, nonNegativeInteger,
nonPositiveInteger, positiveInteger, unsignedByte, unsignedInt,
unsignedLong,unsignedShort) |
maxExclusive, maxInclusive, minExclusive, minExclusive, totalDigits, pattern fractionDigits se fija en un valor 0 whitespace se fija para tener un valor collapse |
Tipos de datos de fecha y hora (date, time, dateTime, gYear,gYearMonth, gMonth, gMonthDay, gDay, duration) |
maxExclusive, maxInclusive, minExclusive, minExclusive, pattern whitespace está fijado para tener un valor collapse |
string, normalizedString, token | length, maxLength, minLength, pattern whitespace es preserve para string, replace para normalizedString y collapse para token |