7
votes

Comment valider une étiquette de valeur de chaîne vide dans XSD

J'ai un fichier XML qui a des valeurs de date et d'autres types de données.

<Purchasedate Name="purcaseDate" value=""/>

xsd

0 commentaires

4 Réponses :


0
votes

Essayez d'ajouter cet attribut nillable = "true" dans la définition de la balise XML Vous pouvez également jeter un coup d'œil à son lien http://www.zvon.org /xxl/xmlschemaTortial/Output/ser_over_st0.html
meilleures réaménagements, de
Iordan


0 commentaires

9
votes

C'est trop facile ..

Tout ce que vous avez à faire est d'inclure Spécification de chaîne vide dans votre modèle

C'est le façon de faire ça ..

Pour votre référence, j'ai écrit un échantillon de morceaux de codes ..

échantillon xml: xxx

échantillon XSD: (inclut le type personnalisé def) < Pré> xxx


0 commentaires

0
votes

le '?' Le caractère dans la regex signifie que le caractère avant de se produire 0 ou 1 fois.

Ainsi afin de résoudre votre problème, vous devez envelopper la regex entre parenthèses et mettre un questionnaire à la fin: p>

  <xs:simpleType name="PurchaseDateType">
    <xs:restriction base="xs:string">
      <xs:pattern value="(Regular_pattern_goes_here)?"/>
    </xs:restriction>
  </xs:simpleType>


0 commentaires

0
votes

Si vous contrôlez la syntaxe du XML, vous devez envisager de définir l'élément comme suit. Puisque XML-Schema fournit déjà un type de date, vous devez l'utiliser à moins d'avoir une raison vraiment bonne raison. Je dis cela parce que cela facilitera la tâche que d'autres utilisent le XML et pour que vous utilisiez de meilleures structures de code plus tard. Je n'ai pas inclus l'attribut "nom" car il semblait redondant du nom de l'élément.

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">

<xs:element name="Purchasedate" nillable="true" type="xs:date"/>
<xs:element name="Purchasedate2">
    <xs:complexType>
        <xs:attribute name="value" type="xs:date"/>
    </xs:complexType>
</xs:element>
<xs:element name="root">
    <xs:complexType>
        <xs:sequence>
            <xs:element ref="Purchasedate"/>
            <xs:element minOccurs="0" ref="Purchasedate2"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>


0 commentaires