Modelos XSD Abstractos

Superior  Previo  Próximo

Los esquemas XML se pueden modelar usando modelos de clase simple y abstracta. Esto puede ser útil para permitir que un arquitecto comience a trabajar un nivel de abstracción más alto, sin preocuparse por los detalles de implementación de un esquema. Tal modelo abstracto se puede refinar aún más usando la caja de esquema XML de EA o se puede generar directamente por un Generador de Esquema de EA. En este caso, un conjunto de asignaciones predeterminadas se asume por el generador del esquema para convertir el modelo abstracto a un archivo XSD.

 

A continuación se muestra una versión simplificada del modelo ejemplo de los Detalles de nuestro Empleado, el que no usa estereotipos especificados o valores etiquetados.

 

 

genxsdexample

 

 

El siguiente fragmento de esquema será generado por EA, de acuerdo al modelo de arriba.

 

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

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

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

       <xs:complexType name="Person">

               <xs:sequence>

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

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

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

                       <xs:element name="Person.gender" 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:complexType>

       <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="ContactInfo.homePhone" type="xs:string"/>

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

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

                       <xs:element name="ContactInfo.email" type="xs:string"/>

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

               </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:sequence>

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

                               <xs:complexType>

                                       <xs:sequence>

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

                                       </xs:sequence>

                               </xs:complexType>

                       </xs:element>

               </xs:sequence>

       </xs:complexType>

</xs:schema>