2017-11-06 5 views
0

ich studiere gerade xml, xsd und xsl ich habe diese Frage, die ich eine ID als eine positive Ganzzahl im Bereich von 1000 bis 2000 definieren muss. Das Attribut ist erforderlich und es muss nur eine ID pro Person geben.Wie definiere ich einen Bereich in xsd und xsd Einschränkungen

hier ist die xml

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> 
<?xml-stylesheet type="text/xsl" href="items.xsl" ?> 

<sales> 
    <sale> 
     <id>1027</id> 
     <firstName>Elaine</firstName> 
     <lastName>Conner</lastName> 
     <street>Ap #177-657 Pede Avenue</street> 
     <city>Miller</city> 
     <postCode>2143</postCode> 
     <salesQuantity>100</salesQuantity> 
     <productId>p101</productId> 
    </sale> 
    <sale> 
     <id>1105</id> 
     <firstName>Shelby</firstName> 
     <lastName>Hinton</lastName> 
     <street>P.O. Box 551, 5296 Penatibus Rd</street> 
     <city>Granville</city> 
     <postCode>2142</postCode> 
     <salesQuantity>75</salesQuantity> 
     <productId>p201</productId> 
    </sale> 
    <sale> 
     <id>1122</id> 
     <firstName>Bryar</firstName> 
     <lastName>Weiss</lastName> 
     <street>P.O. Box 511, 5053 Ac Avenue</street> 
     <city>Campsie</city> 
     <postCode>2153</postCode> 
     <salesQuantity>150</salesQuantity> 
     <productId>p105</productId> 
    </sale> 
    <sale> 
     <id>1037</id> 
     <firstName>Slade</firstName> 
     <lastName>Haynes</lastName> 
     <street>593-252 Nullam Rd</street> 
     <city>Lidcombe</city> 
     <postCode>2145</postCode> 
     <salesQuantity>100</salesQuantity> 
     <productId>p101</productId> 
    </sale> 
</sales> 
  1. Sie bitte lassen Sie mich wissen, ob ich dieses Recht mit der ID bekam und wie kann ich den Bereich von 1000 bis 2000 in der ID erstellen ?? Ich dachte, es ist die minOccurs und maxOccurs, aber das kann nicht richtig sein ?? maxOccurence ist die mögliche maximale "Vorkommen" Attribute und nicht die Reichweite, oder? und ich habe die mimOccurence = "1" verwendet, weil es nur 1 ID pro Person geben muss ??

  2. mit meiner productId muss ich Einschränkungen mit 4 alphanumerischen Zeichen festlegen. Der Wert im Muster muss ein Großbuchstabe sein, gefolgt von 3 Zahlen. Können Sie bitte bestätigen, ob ich es richtig gemacht habe?

Hier ist die xsd, an der ich arbeite.

<?xml version = "1.0"?> 

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="sales"> 
     <xs:complexType> 
      <xs:sequence> 
       <xs:element name="sale" type="mySale" minOccurs="1" maxOccurs="unbounded" /> 
      </xs:sequence> 
     </xs:complexType> 
    </xs:element> 

    <xs:complexType name="mySale"> 
     <xs:sequence> 
      <xs:element name="id" type="xs:positiveInteger" minOccurs="1" use="required" /> 
      <xs:element name="firstName" type="xs:string" use="required" /> 
      <xs:element name="lastName" type="xs:string" use="required" /> 
      <xs:element name="street" type="xs:string" /> 
      <xs:element name="city" type="xs:string" /> 
      <xs:element name="postCode" type="xs:positiveInteger" use="required" /> 
      <xs:element name="salesQuantity" type="xs:integer" /> 
      <xs:element name="productId"> 
       <xs:simpleType> 
        <xs:restriction base="xs:string"> 
         <xs:pattern value="[A-Z0-90-90-9]{4}" /> 
        </xs:restriction> 
       </xs:simpleType> 
      </xs:element> 
     </xs:sequence> 
    </xs:complexType> 
</xs:schema> 

danken Ihnen im Voraus

Antwort

0

eine id als eine positive ganze Zahl im Bereich von 1000 bis 2000.

Nutzung definieren xsd:minInclusive oder xsd:maxInclusive:

<xsd:simpleType name="Id1000to2000Type"> 
    <xsd:restriction base="xsd:integer"> 
     <xsd:minInclusive value="1000"/> 
     <xsd:maxInclusive value="2000"/> 
    </xsd:restriction> 
    </xsd:simpleType> 

Das Attribut ist erforderlich und es muss nur eine id pro Person vorhanden sein.

Vorsicht. In XML, Attribut bedeutet etwas sehr Spezifisches; id ist ein Element hier.

<xsd:element name="id" minOccurs="1" maxOccurs="1" type="Id1000to2000Type"/> 

Beachten Sie, dass, da die Standardwerte für minOccurs and maxOccurs are 1, können Sie sie in der obigen Erklärung weglassen kann.

mit meiner productId, muss ich Einschränkungen mit 4 alphanumerischen Zeichen festlegen. Der Wert im Muster muss ein Großbuchstabe sein, gefolgt von 3 Zahlen. Können Sie bitte bestätigen, ob ich es richtig gemacht habe?

<xs:pattern value="[A-Z0-90-90-9]{4}" /> 

Nein, würde Ihr Muster Großbuchstaben ermöglichen unter den Ziffern gemischt zu erscheinen, und nicht, dass eine vorhanden sein müssen. Sie sollten auch keine 0-9 Bereiche zusätzlich zu {4} wiederholen.

Verwenden Sie stattdessen eine der folgenden äquivalenten Ausdrücke Ihrer Einschränkung verwenden:

 <xs:pattern value="[A-Z][0-9][0-9][0-9]" /> 
    <xs:pattern value="[A-Z][0-9]{3}" /> 
    <xs:pattern value="[A-Z]\d{3}" /> 
0

Vielleicht müssen Sie ein wenig mehr lesen tun?

Für das id-Attribut, dessen Typ als benutzerdefinierten Typs definieren, die durch Restriktion von xs abgeleitet ist: integer mit zwei Facetten: minInclusive und maxInclusive

<xs:simpleType name="IdType"> 
    <xs:restriction base="xs:integer"> 
    <xs:minInclusive value="1000"/> 
    <xs:maxInclusive value="2000"/> 
    </xs:restriction> 
</xs:simpleType> 

Für die productId, das Muster, das Sie wollen, ist, [A-Z][0-9][0-9][0-9].