如何仅在xsd

时间:2016-08-30 06:57:35

标签: xml xsd-validation

这是我的样本xml。

<ReportedBy>
       <GivenName>amila</GivenName>
       <FamilyName />
       <MiddleInitials />          
</ReportedBy>

<AdmittingDoctor>
     <Uid>BISSEJ</Uid>
     <GivenName>JEAN-CLAUDE(ROH)</GivenName>
     <FamilyName>BISSERBE</FamilyName>
</AdmittingDoctor>

这是我的xsd。

<xs:element name="ReportedBy">
    <xs:complexType>
        <xs:sequence>
            <xs:element ref="GivenName" minOccurs="0"/>
            <xs:element ref="FamilyName" minOccurs="0"/>
            <xs:element ref="MiddleInitials" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>

<xs:element name="AdmittingDoctor">
    <xs:complexType>
        <xs:sequence minOccurs="0">
            <xs:element ref="Uid" minOccurs="0"/>
            <xs:element ref="GivenName" minOccurs="0"/>
            <xs:element ref="FamilyName" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>

<xs:simpleType name="reviewGivenName">  
    <xs:restriction base="xs:string">   
        <xs:maxLength value="15"/>  
    </xs:restriction>  
</xs:simpleType>
<xs:element name="GivenName" nillable="true">
    <xs:complexType>
        <xs:simpleContent>
            <xs:extension base="reviewGivenName">
                <xs:attribute type="xs:string" name="updatable"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
</xs:element>

在这个xsd中我使用上面提到的方法验证了字段“GivenName”的最大长度。因为在“AdmittingDoctor”和“ReportedBy”部分中验证了GivenName字段的最大长度。

但我想验证“AdmittingDoctor”部分的“GivenName”字段的最大长度。我可以将xsd更改为满足我的要求吗?任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

如果您只想限制大小,为什么不使用simpleType:

 <xs:simpleType name="reviewGivenName">  
    <xs:restriction base="xs:string">   
        <xs:maxLength value="15"/>  
    </xs:restriction>  
 </xs:simpleType>  

<xs:element name="AdmittingDoctor">
    <xs:complexType>
        <xs:sequence minOccurs="0">
            <xs:element name="Uid" minOccurs="0"/>
            <xs:element name="GivenName" type="tns:reviewGivenName" minOccurs="0"/>
            <xs:element name="FamilyName" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>

<xs:element name="ReportedBy">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="GivenName" minOccurs="0"/>
            <xs:element name="FamilyName" minOccurs="0"/>
            <xs:element name="MiddleInitials" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>
相关问题