XML-Schema: Attribute + Typen
Fred
- xml
0 Frank (no reg)0 Fred
Hejo,
ich komme da bei einer Aufgabenstellung nicht weiter:
<name id="12">Gerhard Schröder</name>
Nun versuche ich mittels
<xs:element name="name" type="xs:string">
xs:complexType
<xs:attribute name="id" type="xs:integer"/>
</xs:complexType>
</xs:element>
das ganze in xml-schema festzulegen, aber ich bekomme vom parser einen fehler, dass einem anonymen typen kein typ zugewiesen werden kann. Kann mir das einer erklären? Was kann man degegen tun?
Hi,
du erklärst für dein Element "name" ja bereits einen SimpleType,
nämlich xs:string.
Du solltest stattdessen die type Angabe oben weglassen und innerhalb
von xs:complexType einen xs:simpleContent mit Erweiterung (Extension)
des Basistyps xs:string verwenden
Also:
<xs:element name="name">
xs:complexType
xs:simpleContent
<xs:extension base="xs:string">
<xs:attribute name="id" type="xs:integer" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
HTH, Ciao, Frank
Hejo ;-)
<xs:element name="name">
xs:complexType
xs:simpleContent
<xs:extension base="xs:string">
<xs:attribute name="id" type="xs:integer" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>HTH, Ciao, Frank
Thanx für die Hilfe!!!!!
Jetzt habe ich nur noch das Problem, dass für das Element name nur bestimmte Namen vorgesehen sein sollen, also, Name1; Name2, Name3...
Ich dachte ich mache das einfach mit
xs:restriction
xs:enumerationName1</xs:enumeration>
...
</xs:restriction>
Aber ich kriege das leider nicht in das obige Stück eingebaut?!!? Kann mit ds noch einer helfen??
Ach und, da wäre noch was: Wie kann ich solche 'enumerations' für >Attributwerte machen?
Hi,
indem du das entsprechend schachtelst, vgl.
<xs:simpleType name="CategoryType">
<xs:restriction base="xs:string">
<xs:enumeration value="A" />
<xs:enumeration value="B" />
<xs:enumeration value="D" />
<xs:enumeration value="P" />
<xs:enumeration value="E" />
<xs:enumeration value="N" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="EnumStringType">
<xs:restriction base="xs:string">
<xs:enumeration value="Albert" />
<xs:enumeration value="Berta" />
<xs:enumeration value="Detlef" />
<xs:enumeration value="Paula" />
<xs:enumeration value="Emily" />
<xs:enumeration value="Norbert" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="MyElement">
<xs:simpleContent>
<xs:extension base="EnumStringType">
<xs:attribute name="type" type="CategoryType" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:element name="root">
<xs:complexType>
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="name" type="MyElement" />
</xs:sequence>
</xs:complexType>
</xs:element>
sollte genau das ergeben, was du willst.
<root>
<name type="A">Berta</name>
<!-- weitere folgen hier -->
</root>
Grüße, Frank