如何仅在 xsd 中的一个字段中验证最大长度

how to validate maximum length only in one field in xsd

这是我的样本 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 中,我已使用上述 method.because 验证了字段的最大长度 "GivenName"和 "ReportedBy" 个部分。

但我想验证 "AdmittingDoctor" 部分 only.how 的 "GivenName" 字段的最大长度,我可以更改上面的 xsd 以完全满足我的要求吗?任何帮助将不胜感激。

如果你只是想限制大小,为什么不直接使用简单类型:

 <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>