Einschränkung eines elements bei xsd

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Einschränkung eines elements bei xsd

    ich möchte das element methodtype je nachdem in welchem element es benutzt wird einschränken
    bsp.: wenn ich ein cetype habe dann darin ein method definiere, dann darf das attribut m_type in method nur die werte OS und trigger annehmen,
    bei smtype nur noOS.

    gibts es ne möglichkeit so eine beschränkung ins schema file einzufügen.

    Quellcode

    1. <xsd:complexType name="methodType">
    2. <xsd:sequence>
    3. <xsd:element name="interfaceElement" type="interfaceElementType" minOccurs="0" maxOccurs="unbounded"/>
    4. </xsd:sequence>
    5. <xsd:attribute name="name" type="xsd:NMTOKEN" use="required"/>
    6. <xsd:attribute name="m_type" use="required">
    7. <xsd:simpleType>
    8. <xsd:restriction base="xsd:NMTOKEN">
    9. <xsd:enumeration value="OS"/>
    10. <xsd:enumeration value="NoOS"/>
    11. <xsd:enumeration value="trigger"/>
    12. </xsd:restriction>
    13. </xsd:simpleType>
    14. </xsd:attribute>
    15. </xsd:complexType>
    16. <xsd:complexType name="smType">
    17. <xsd:sequence>
    18. <xsd:element name="method" type="methodType" minOccurs="0" maxOccurs="unbounded"/>
    19. <xsd:element name="sm" type="smType" minOccurs="0" maxOccurs="unbounded"/>
    20. <xsd:element name="interfaceElement" type="interfaceElementType" minOccurs="0" maxOccurs="unbounded"/>
    21. </xsd:sequence>
    22. <xsd:attribute name="name" type="xsd:NMTOKEN" use="required"/>
    23. </xsd:complexType>
    24. <xsd:complexType name="ceType">
    25. <xsd:sequence>
    26. <xsd:element name="method" type="methodType" minOccurs="0" maxOccurs="unbounded"/>
    27. <xsd:element name="ce" type="ceType" minOccurs="0" maxOccurs="unbounded"/>
    28. <xsd:element name="interfaceElement" type="interfaceElementType" minOccurs="0" maxOccurs="unbounded"/>
    29. </xsd:sequence>
    30. <xsd:attribute name="name" type="xsd:NMTOKEN" use="required"/>
    31. </xsd:complexType>
    Alles anzeigen



    meine idee, ich habe es über vererbung versucht, aber es kommen fehler medlungen beim validieren, gibt es vlt eine bessere oder andere lösung

    Quellcode

    1. <xsd:complexType name="methodType_module">
    2. <xsd:complexContent>
    3. <xsd:restriction base="methodType">
    4. <xsd:sequence>
    5. <xsd:element name="interfaceElement" type="interfaceElementType" minOccurs="0" maxOccurs="unbounded"/>
    6. </xsd:sequence>
    7. <xsd:attribute name="name" type="xsd:NMTOKEN" use="required"/>
    8. <xsd:attribute name="m_type" use="required">
    9. <xsd:simpleType>
    10. <xsd:restriction base="xsd:NMTOKEN">
    11. <xsd:enumeration value="OStype"/>
    12. </xsd:restriction>
    13. </xsd:simpleType>
    14. </xsd:attribute>
    15. </xsd:restriction>
    16. </xsd:complexContent>
    17. </xsd:complexType>
    Alles anzeigen