2011-10-05 6 views
-1

Comment vérifier un élément XML avec un contenu mixte? L'élément peut contenir une chaîne "Undefined" ou des valeurs flottantes. Je pense qu'il peut être fait à travers la restriction de chaîne avec motif, mais peut-être un meilleur moyen existe?Types mixtes dans XSD

Répondre

0

Résolu par l'élément Union utilisant.

Considérons l'exemple ci-dessous: Un exemple XML définit les dates du calendrier.

<Calender> 
    <Date> 
    <Date>01</Date> 
    <Month>Jan</Month> 
    <Year>2013</Year> 
    </Date> 
    <Date> 
    <Date>31</Date> 
    <Month>01</Month> 
    <Year>2013</Year> 
    </Date> 
</Calender> 

Depuis élément Mois a deux types Int et cordes .. Il peut être résolu comme la façon ci-dessous XSD est écrit:

<?xml version="1.0" encoding="utf-8"?> 
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="Calender" type="Calender"/> 
    <xs:complexType name="Calender"> 
    <xs:sequence> 
     <xs:element maxOccurs="unbounded" name="Date" type="Date"/> 
    </xs:sequence> 
    </xs:complexType> 

    <xs:complexType name="Date"> 
    <xs:sequence> 
     <xs:element name="Date" type="xs:unsignedByte" /> 
     <xs:element name="Month" type="Month" /> 
     <xs:element name="Year" type="xs:unsignedShort" /> 
    </xs:sequence> 
    </xs:complexType> 

    <xs:simpleType name="Month"> 
    <xs:union memberTypes="MonthNum MonthVal" /> 
    </xs:simpleType> 
    <xs:simpleType name="MonthNum"> 
    <xs:restriction base="xs:int"> 
     <xs:minInclusive value="01"/> 
     <xs:maxInclusive value="31"/> 
    </xs:restriction> 
    </xs:simpleType> 
    <xs:simpleType name="MonthVal"> 
    <xs:restriction base="xs:string"> 
     <xs:enumeration value="Jan"/> 
     <xs:enumeration value="Feb"/> 
     <xs:enumeration value="Mar"/> 
     <xs:enumeration value="Dec"/> 
    </xs:restriction> 
    </xs:simpleType> 
</xs:schema> 
Questions connexes