如何仅在 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>
这是我的样本 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>