2016-08-02 8 views
1

Ich arbeite an der Erstellung eines Schemas, aber bleibe in der Nähe von meinem Stammelement mit der Definition als complexType mit Kindern, Attribute, und Einschränkungen für diese Attributexsd: complexType mit Kindern, Attribute und Einschränkungen

Das ist, was ich bisher versucht haben .... (Raffstore Format)

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
<xsd:element name="foos"> 
    <xsd:complexType> 
     <xsd:sequence> 
      <xsd:element name="foo" type="FooType" minOccurs="1" maxOccurs="unbounded"/> 
     </xsd:sequence>   
    </xsd:complexType> 
</xsd:element> 
<xsd:complexType name="FooType"> 
    <xsd:attribute name="exchangeType" type="xsd:string" use="required"> 
     <xsd:simpleType> 
      <xsd:restriction base="xsd:string"> 
       <xsd:enumeration value="S" /> 
       <xsd:enumeration value="T" /> 
      </xsd:restriction> 
     </xsd:simpleType> 
    </xsd:attribute> 
    <xsd:sequence> 
     <xsd:element name="thing1" type="Thing1Type" /> 
     <xsd:element name="thing2" type="Thing2Type" /> 
    </xsd:sequence> 
</xsd:complexType> 
</xsd:schema> 

ich habe eine Art und Weise Probleme wurden mit der Suche nach diesem Attribut und deren Beschränkungen

jeden Gedanken einzuarbeiten s?

Antwort

1

Zwei Haupt Korrekturen:

  1. Eine xsd:attribute Erklärung kann nicht sowohl eine lokale xsd:simpleType und ein @type Attribut; das Attribut @type wurde gelöscht.
  2. Eine xsd:attribute Deklaration kann nicht vor xsd:sequence erscheinen; verschieben Sie es nach.

XSD mit Korrekturen angewendet:

Diese XSD hat die obigen Korrekturen und einige andere kleinere Korrekturen angewendet und ist jetzt gültig:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <xsd:element name="foos"> 
    <xsd:complexType> 
     <xsd:sequence> 
     <xsd:element name="foo" type="FooType" 
        minOccurs="1" maxOccurs="unbounded"/> 
     </xsd:sequence>   
    </xsd:complexType> 
    </xsd:element> 
    <xsd:complexType name="FooType"> 
    <xsd:sequence> 
     <xsd:element name="thing1" type="Thing1Type" /> 
     <xsd:element name="thing2" type="Thing2Type" /> 
    </xsd:sequence> 
    <xsd:attribute name="exchangeType" use="required"> 
     <xsd:simpleType> 
     <xsd:restriction base="xsd:string"> 
      <xsd:enumeration value="S" /> 
      <xsd:enumeration value="T" /> 
     </xsd:restriction> 
     </xsd:simpleType> 
    </xsd:attribute> 
    </xsd:complexType> 
    <xsd:complexType name="Thing1Type"/> 
    <xsd:complexType name="Thing2Type"/> 
</xsd:schema> 
+0

Danke, @kjhughes, macht dies eine Menge mehr Sinn und ist die Klarheit, die ich brauchte, um dies zu erreichen – kmancusi

Verwandte Themen