hasp: XML-Schema --> Attr.dekl. "prohibited"?

Hallo,

ich habe ein kleines Verständnisproblem. Ich kann für ein Attribut eines Elementes in einem XML-Schema ein prohibited-"Flag" setzten, damit ist dieses Attribut verboten.
Meine Frage ist warum brauche ich das? Wenn ich in meine Definition dieses Attribut gar NICHT erst aufnhemen würde müsste ichs gar nicht verbieten und hätte das gleiche Ziel erreicht ...

Ich steh am Schlauch, helft mir BITTE ...

hasp

  1. Hallo,

    ich habe ein kleines Verständnisproblem. Ich kann für ein Attribut eines Elementes in einem XML-Schema ein prohibited-"Flag" setzten, damit ist dieses Attribut verboten.
    Meine Frage ist warum brauche ich das? Wenn ich in meine Definition dieses Attribut gar NICHT erst aufnhemen würde müsste ichs gar nicht verbieten und hätte das gleiche Ziel erreicht ...

    "prohibited" steht eher fuer "entfernte" (removed) Attribute im Rahmen einer Schema-Definition.

    Wenn man ausgehend von einer complexType-Definition als Basis eine andere complexType-Definition ableiten moechte, aber Aenderungen des Vorkommens von Attributen noetig sind, bietet sich use="prohibited" an. Das jeweilige Attribut wird aus der vorherigen Definitionsmenge ausgeschlossen.

    Kleines Beispiel:

    <xsd:complexType name="basis">
      xsd:sequence...</xsd:sequence>
      <xsd:attribute name="attr1" type="xsd:string" use="required"/>
      <xsd:attribute name="attr2" type="xsd:integer" use="required"/>
    </xsd:complexType>

    und davon abgeleitet:

    <xsd:complexType name="abgeleitet">
      xsd:complexContent
        <xsd:restriction base="basis">
          xsd:sequence...</xsd:sequence>
          <xsd:attribute name="attr1" type="xsd:string" use="prohibited"/>
          <xsd:attribute name="attr2" type="xsd:integer" use="optional"/>
        </xsd:restriction>
      </xsd:complexContent>
    </xsd:complexType>

    attr1 war im Basisfragment erforderlich und darf in der Ableitung nicht mehr vorkommen waehrend attr2 erforderlich war und nun optional ist. Man stelle sich anschaulich Szenarien wie die Ablage von geschaeftlichen und privaten Kontakten vor, die sowohl identische als auch abweichende Datenstrukturen aufweisen.

    Ein Element koennte man analog mit maxOccurs="0" aus der Ableitung entfernen.

    MfG, Thomas