Modelo XSD

Superior  Previo  Próximo

 

Los esquemas XML son modelados usando los diagramas de clase UML Caja de herramientas del Esquema XML. La caja de herramientas del Esquema XML de EA provee un soporte de construcción para el Perfil del UML para XSD. Esto permite que un modelo de clase del UML abstracto sea automáticamente generado como un archivo (XSD) Esquema XML W3C (XSD).

 

El diagrama de clase de abajo modela un esquema simple para un ejemplo de sistema de "Detalles del Empleado", intencionado para almacenar la información de contacto de un empleado de la compañía. Las clases que se muestran forman un paquete de "DetallesdeEmpleado". Los atributos del UML asignan directamente a los atributos y elementos XML. Tener en cuenta que las clases no tienen métodos, ya que no hay una correspondencia significante entre los métodos de las clases y las estructuras XSD. 

 

 

genxsdstereotypeexample

 

 

El texto a continuación muestra la estructura que se genera para el paquete de Detalles de Empleado por defecto. Tener en cuenta como cada clase del UML corresponde a una definición de ComplexType en el esquema. Los atributos de la clase se generan como elementos de esquema contenidos un grupo de modelo de "secuencia" dentro de la definición. La clase de enumeración es la excepción aquí- este asigna directamente a una enumeración XSD, contenida dentro de una definición de Tipo simple. 

 

<?xml version="1.0" encoding="ISO-8859-1"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

       <xs:simpleType name="Gender">

               <xs:restriction base="xs:string">

                       <xs:pattern value="male|female"/>

               </xs:restriction>

       </xs:simpleType>

       <xs:element name="Person" type="Person"/>

       <xs:complexType name="Person">

               <xs:sequence>

                       <xs:element name="Person.surName" type="xs:string"/>

                       <xs:element name="Person.firstName" type="xs:string"/>

                       <xs:element name="Person.birthDate" type="xs:string"/>

                       <xs:element name="Person.contactDetails">

                               <xs:complexType>

                                       <xs:sequence>

                                               <xs:element ref="ContactInfo"/>

                                       </xs:sequence>

                               </xs:complexType>

                       </xs:element>

               </xs:sequence>

               <xs:attributeGroup ref="Person.att"/>

       </xs:complexType>

       <xs:attributeGroup name="Person.att">

               <xs:attribute name="Person.gender" type="Gender"/>

       </xs:attributeGroup>

       <xs:element name="Employee" type="Employee"/>

       <xs:complexType name="Employee">

               <xs:complexContent>

                       <xs:extension base="Person">

                               <xs:sequence>

                                       <xs:element name="Employee.status" type="Status"/>

                                       <xs:element name="Employee.jobTitle" type="xs:string"/>

                                       <xs:element name="Employee.startDate" type="xs:date"/>

                                       <xs:element name="Employee.department" type="xs:string"/>

                               </xs:sequence>

                       </xs:extension>

               </xs:complexContent>

       </xs:complexType>

       <xs:element name="ContactInfo" type="ContactInfo"/>

       <xs:complexType name="ContactInfo">

               <xs:sequence>

                       <xs:element name="homePhone" type="xs:string"/>

                       <xs:element name="email" type="xs:string" maxOccurs="3"/>

                       <xs:element name="streetAddress" type="xs:string"/>

                       <xs:choice>

                               <xs:element name="mobilePhone" type="xs:string"/>

                               <xs:element name="officePhone" type="xs:string"/>

                       </xs:choice>

               </xs:sequence>

       </xs:complexType>

       <xs:simpleType name="Status">

               <xs:restriction base="xs:string">

                       <xs:enumeration value="Full-Time"/>

                       <xs:enumeration value="Part-Time"/>

                       <xs:enumeration value="Casual"/>

                       <xs:enumeration value="Contract"/>

               </xs:restriction>

       </xs:simpleType>

       <xs:element name="EmployeeRecords" type="EmployeeRecords"/>

       <xs:complexType name="EmployeeRecords">

               <xs:all>

                       <xs:element name="EmployeeRecords.Employee">

                               <xs:complexType>

                                       <xs:sequence>

                                               <xs:element ref="Employee" minOccurs="0" maxOccurs="unbounded"/>

                                       </xs:sequence>

                               </xs:complexType>

                       </xs:element>

               </xs:all>

       </xs:complexType>

</xs:schema>

 

 

Los siguientes temas explican aun más.