我想声明一个要包含在复杂类型声明中的元素,并且该元素具有强制属性:"option = MyOption",但"option"属性的值可以是任何值,具体取决于上下文.
也就是说:在使用包含此元素的复杂类型的任何文档中,具有某些未知值的属性"选项"应该是必需的.
例:
<xs:element name="SpecialOption" type="xs:string"/>
<xs:complexType name="SpecialOptions">
<xs:sequence>
<xs:element ref="SpecialOption" minOccurs="1" maxOccurs="100"/>
<xs:element ref="XXX"/>
</xs:sequence>
</xs:complexType>
Run Code Online (Sandbox Code Playgroud)
在这种情况下,复杂类型"SpecialOptions"中的"SpecialOption"元素应具有此必需属性.
我不知道如何在XSD中声明元素的强制属性,或者如何指定属性必须具有尚未知的值.
pma*_*tin 26
您需要修改"SpecialOption"元素的定义以包含必需的属性.更新此代码:
<xs:element name="SpecialOption" type="xs:string"/>
Run Code Online (Sandbox Code Playgroud)
对此:
<xs:element name="SpecialOption">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="Option" type="xs:string" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
Run Code Online (Sandbox Code Playgroud)
通过此更改,您的复杂类型将在"SpecialOptions"复杂类型中的"SpecialOption"元素的所有实例上包含所需的"Option"属性.将"Option"属性声明为类型xs:string
将允许在此字段中传递任何值.
mou*_*sio 16
1)这是一个简单的必需字符串属性
<xs:element name="SpecialOption">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="Option" type="xs:string" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
Run Code Online (Sandbox Code Playgroud)
2)要求一个允许值列表中的一个:
<xs:element name="SpecialOption">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="Option" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="DE"/>
<xs:enumeration value="EN"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
Run Code Online (Sandbox Code Playgroud)
3)可以使用范围作为限制,如下例所示.
<xs:element name="SpecialOption">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="Option" use="required">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="95"/>
<xs:maxInclusive value="137"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
Run Code Online (Sandbox Code Playgroud)
4)下面,该属性被声明为包含十进制值的列表.这允许属性包含指定值的子集,例如Option ="6 77 95".
<xs:simpleType name="Items">
<xs:restriction base="xs:decimal">
<xs:enumeration value="137"/>
<xs:enumeration value="95"/>
<xs:enumeration value="6"/>
<xs:enumeration value="77"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="SpecialOption">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="Option" use="required">
<xs:simpleType>
<xs:list itemType="Items"/>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
Run Code Online (Sandbox Code Playgroud)
5)这里属性被声明为可选属性,但是提供了一个默认值("test"),这有时足够了:
<xs:element name="SpecialOption">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="Option" type="xs:string" use="optional" default="test"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
28987 次 |
最近记录: |