XSD:Controlling xml 元素的长度限制基于该元素的属性值,使用 XSD
XSD:Controlling the restriction on length of xml element based on that element's attribute value using XSD
示例如下 XML:
<PatientName>
<FamilyName updatable="2">Bob</FamilyName>
</PatientName>
目前使用XSD是这样的:
<xs:simpleType name="reviewFamilyname">
<xs:restriction base="xs:string">
<xs:maxLength value="20"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="FamilyName" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="reviewFamilyname">
<xs:attribute type="xs:string" name="updatable"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
目前我对姓氏使用的限制是最大长度应为 20 个字符。
我正在使用 XSD 1.0,我想根据 FamilyName 元素的属性值对 FamilyName 元素应用限制。我想在
时禁用限制
FamilyName 元素中的属性(可更新)值等于 2。
并且属性(可更新)值等于 1 且 FamilyName 元素值为空。
在所有其他情况下,限制应为 enabled.How 我是否应该更改 XSD 以完全满足这些要求,这可能吗?如果可以,如何?
谢谢。
在 XSD 1.0 中,元素内容的类型不能依赖于其属性的值。
在 XSD 1.1 中,您可以使用称为 条件类型分配.
的功能来实现此目的
你会想要这样的东西:
<xs:element name="FamilyName" type="xs:anyType">
<xs:alternative test="@updateable = 1" type="...."/>
<xs:alternative test="@updateable = 2" type="...."/>
<xs:alternative type="...."/>
</xs:element>
示例如下 XML:
<PatientName>
<FamilyName updatable="2">Bob</FamilyName>
</PatientName>
目前使用XSD是这样的:
<xs:simpleType name="reviewFamilyname">
<xs:restriction base="xs:string">
<xs:maxLength value="20"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="FamilyName" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="reviewFamilyname">
<xs:attribute type="xs:string" name="updatable"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
目前我对姓氏使用的限制是最大长度应为 20 个字符。 我正在使用 XSD 1.0,我想根据 FamilyName 元素的属性值对 FamilyName 元素应用限制。我想在
时禁用限制FamilyName 元素中的属性(可更新)值等于 2。
并且属性(可更新)值等于 1 且 FamilyName 元素值为空。
在所有其他情况下,限制应为 enabled.How 我是否应该更改 XSD 以完全满足这些要求,这可能吗?如果可以,如何?
谢谢。
在 XSD 1.0 中,元素内容的类型不能依赖于其属性的值。
在 XSD 1.1 中,您可以使用称为 条件类型分配.
的功能来实现此目的你会想要这样的东西:
<xs:element name="FamilyName" type="xs:anyType">
<xs:alternative test="@updateable = 1" type="...."/>
<xs:alternative test="@updateable = 2" type="...."/>
<xs:alternative type="...."/>
</xs:element>