我想指定要么fieldname或freetext必须始终存在于适用于此XSD的XML文件中.有没有办法做到这一点?
<xs:complexType name="tSome">
<xs:sequence>
<!-- either one of the two below has to be present. -->
<xs:element name="fieldname" type="xs:string" />
<xs:element name="freetext" type="xs:string" />
<!-- this one below must always be present -->
<xs:element name="dbtablename" type="xs:string" />
</xs:sequence>
</xs:complexType>
Run Code Online (Sandbox Code Playgroud)
Dra*_*ter 24
XML Schema中有一个Choice Indicator,它允许您获取其中一个包含的元素,但不能包含两个或更多元素.如果你想要3中的任何2,我建议做这样的事情:
<xs:choice>
<xs:element name="fieldname" type="xs:string" minOccurs="0" maxOccurs="1" />
<xs:element name="freetext" type="xs:string" minOccurs="0" maxOccurs="1" />
<xs:element name="dbtablename" type="xs:string" minOccurs="0" maxOccurs="1" />
</xs:choice>
<xs:choice>
<xs:element name="fieldname" type="xs:string" minOccurs="0" maxOccurs="1" />
<xs:element name="freetext" type="xs:string" minOccurs="0" maxOccurs="1" />
<xs:element name="dbtablename" type="xs:string" minOccurs="0" maxOccurs="1" />
</xs:choice>
Run Code Online (Sandbox Code Playgroud)
(也许maxOccurs会阻止你两次选择同一个元素.)如果这不起作用,我什么都不会想到.
编辑:我第一次没有正确理解这个问题.如果你想dbtablename永远与任何一个fieldname或在一起freetext,那么这就是答案:
<xs:complexType name="tSome">
<xs:sequence>
<xs:choice>
<xs:element name="fieldname" type="xs:string" />
<xs:element name="freetext" type="xs:string" />
</xs:choice>
<xs:element name="dbtablename" type="xs:string" />
</xs:sequence>
</xs:complexType>
Run Code Online (Sandbox Code Playgroud)
所以,你想要一个fieldname还是freetext两个都不想要?或者两者都有?然后dbtablename可选?
这是 1 或 2 个元素:
<xs:choice minOccurs="1" maxOccurs="2">
<xs:element name="fieldname" type="xs:string"/>
<xs:element name="freetext" type="xs:string"/>
<xs:element name="dbtablename" type="xs:string"/>
</xs:choice>
Run Code Online (Sandbox Code Playgroud)
这是你想要的吗?还是你想dbtablename分开?
| 归档时间: |
|
| 查看次数: |
22287 次 |
| 最近记录: |