Dudas de Programacion » XML » eXtensible Markup Language (XML)

Herencia y elementos abstractos en XML Schemas

(1 post)
  • Started 2 years ago by Pepper
  1. Hola a todos:

    Resulta que tengo un schema, "generico" que quiero que haga de "padre" para otros schemas. Este schema, llamemosle "Card" quiero que tenga un elemento "Abstracto", y luego, los schemas hijo, que lo implementen como quieran, de forma que unos documentos puedan ser

    <Data>
    <Nombre>David</Nombre>
    </Data>

    y otros asi

    <Data>
    <Ingrediente>Sal</Ingrediente>
    </Data>

    1º pregunta: ¿Como declaro este elemento?

    simplemente asi?:

    <xs:element name="Data" abstract="true"/>

    o tengo que declarar un tipo para él:

    <xs:element name="Data" type="GenericData" abstract="true"/>
    <xs:complexType name="GenericData">
    <xs:sequence>
    <xs:any namespace="##any" processContents="skip" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
    </xs:complexType>

    2º pregunta: ¿Ahora los hijos, como indican que van a dar una implementacion de ese elemento?

    asi?:

    <xs:include schemaLocation="Card.xsd">
    <!--include hace como si hubiera escrito el archivo entero-->
    <xs:element name="PersonalData" substitutionGroup="GenericData">
    <xs:complexType>
    <xs:restriction base="GenericData">
    <xs:sequence>
    <xs:element ref="Nombre"/>
    </xs:sequence>
    </xs:restriction>
    </xs:complexType>
    </xs:element>
    <xs:element name="Nombre" type="xs:string"/>
    </xs:include>
    </xs:schema>

    o asi:

    <xs:include schemaLocation="Card2.xsd">
    <!--Es como si hubiera escrito el archivo entero-->
    <xs:complexType name="PersonalData">
    <xs:complexContent>
    <extension base="Card:Data"/>
    <xs:element name="Nombre" type="xs:string"/>
    </xs:complexContent>
    </xs:complexType>
    <xs:element name="Data" type="PersonalData"/>
    </xs:include>
    </xs:schema>

    Posted 2 years ago #



Reply

You must log in to post.

937 posts in 395 topics over 36 months by 350 of 788 members. Latest: redundantlogic2, shianim, pepered

Acerca de...

Dudas de Programación es una Web, dentro del proyecto aulambra.com que nace con la idea de propocionar un foro de consultas sobre diferentes temas de programación. Orientado a ayudar a los internautas hispano-hablantes en Internet.

Ir al Blog de Linea de Código

Otras Webs