maximale lengte verificatie via XSD

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Wtrdk
  • Registratie: Mei 2006
  • Laatst online: 03-09 11:39
Ik wil een xml-bestand valideren met een xsd. Dat gaat prima. Echter zou ik ook graag willen dat de validatie aangeeft of een onderdeel aan een maximale lengte voldoet.
Voorbeeld (zie onderstaande code):
Ik vul in mijn xml een achternaam in van 60 tekens. Het maximale toegestane aantal tekens is 50. Hoe kan ik er voor zorgen dat dit ondervangen wordt?

Ik heb zitten rotzooien met maxLength value="50", maar dan zegt Notepad++ (waarmee ik valideer) dat hij de xsd niet kan parsen. Volgens mij heeft het iets te maken met de 'complexType', maar ik kan via google niet vinden hoe ik dit moet ondervangen.
Heeft iemand een idee?

XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<xs:complexType name="Persoon">
    <xs:sequence>
      <xs:element name="voorletters" type="xs:string" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Voorletters van de persoon. Maximaal 10 tekens.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="tussenvoegsel" type="xs:string" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Tussenvoegsel van de persoon. Maximaal 10 tekens.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="achternaam" type="xs:string" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Achternaam van de persoon. Maximaal 50 tekens.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

Acties:
  • 0 Henk 'm!

  • linksnl
  • Registratie: Februari 2002
  • Niet online
Zoek eens op xsd restriction.

Acties:
  • 0 Henk 'm!

Verwijderd

Ahem. Dat weet ik zelfs nog en ik ben er echt al heel lang uit. :P

<xs:restriction base="xs:string">
<xs:maxLength value="60" />
</xs:restriction>

[ Voor 24% gewijzigd door Verwijderd op 09-02-2011 17:06 ]


  • Wtrdk
  • Registratie: Mei 2006
  • Laatst online: 03-09 11:39
Ik krijg het niet voor elkaar. Waar in het schema moet ik deze code invoegen? Ik krijg telkens de foutmelding 'Unable to parse schema file'. Ik gebruik notepad++, en zonder bovengenoemde aanpassing valideert hij wel prima. (Helaas dus niet op het aantal karakters in een string, wat ik dus graag zou willen...)

Dit werkt helaas dus niet:
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<xs:complexType name="Persoon"> 
    <xs:sequence> 
      <xs:element name="voorletters" type="xs:string" minOccurs="1" maxOccurs="1"> 
        <xs:annotation> 
          <xs:documentation>Voorletters van de persoon. Maximaal 10 tekens.</xs:documentation> 
        </xs:annotation>
            <xs:restriction base="xs:string">
            <xs:maxLength value="10" />
         </xs:restriction>
      </xs:element> 
      <xs:element name="tussenvoegsel" type="xs:string" minOccurs="0" maxOccurs="1"> 
        <xs:annotation> 
          <xs:documentation>Tussenvoegsel van de persoon. Maximaal 10 tekens.</xs:documentation> 
        </xs:annotation> 
<xs:restriction base="xs:string">
            <xs:maxLength value="10" />
         </xs:restriction>
      </xs:element> 
      <xs:element name="achternaam" type="xs:string" minOccurs="1" maxOccurs="1"> 
        <xs:annotation> 
          <xs:documentation>Achternaam van de persoon. Maximaal 50 tekens.</xs:documentation> 
        </xs:annotation> 
<xs:restriction base="xs:string">
            <xs:maxLength value="50" />
         </xs:restriction>
      </xs:element> 
    </xs:sequence> 
  </xs:complexType>

[ Voor 143% gewijzigd door Wtrdk op 11-02-2011 09:22 ]


Acties:
  • 0 Henk 'm!

  • Wtrdk
  • Registratie: Mei 2006
  • Laatst online: 03-09 11:39
Voor zover ik kan zien kan de tag </xs:restriction> alleen in een <xs:simpleType>. Mijn XSD bevat een <xs:complexType>. Klopt dit? Weet iemand een oplossing? (Zie ook mijn bericht hierboven over waar de tags te plaatsen).

Acties:
  • 0 Henk 'm!

  • Wish
  • Registratie: Juni 2006
  • Laatst online: 20:01

Wish

ingwell

Wat heb je zelf al gevonden?

Lees anders ook even dit door. Je zult nog wat moeten sleutelen, maar mogelijk is het zeker.

No drama


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Maak van voorlettes, tussenvoegsel en achternaam alle 3 een simpletype

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Wtrdk
  • Registratie: Mei 2006
  • Laatst online: 03-09 11:39
Thanks, ik ga weer even verder knutselen.
Pagina: 1