【发布时间】:2020-09-11 01:14:19
【问题描述】:
我需要一个接受客户请求或客户 ID 请求的 xml 模式。如果客户 ID 为 0,那么我们需要客户数据,如果 > 0,则客户数据是可选的(他们可以提交修正)。我的 XSD 目前看起来像这样;
<xs:complexType>
<xs:any>
<xs:element name="UserID" type="xs:string" minOccurs="1"/>
<xs:element name="Password" type="xs:string" minOccurs="1"/>
<xs:element name="ReferenceNumber" type="xs:string" minOccurs="0" maxOccurs="1"/>
<xs:element name="CustomerId" minOccurs="1" maxOccurs="1" type="xs:integer"/>
<xs:element ref="WhereSigned"/>
<xs:element name="ContactName" type="xs:string" minOccurs="0" maxOccurs="1"/>
<xs:element name="ContactTelephone" type="xs:string" minOccurs="0" maxOccurs="1"/>
<xs:element name="ContactFax" type="xs:string" minOccurs="0" maxOccurs="1"/>
<xs:element name="ContactEmail" type="xs:string" minOccurs="0" maxOccurs="1"/>
<xs:element ref="MainApplicant" maxOccurs="1"/>
<xs:element ref="JointApplicant" minOccurs="0" maxOccurs="1"/>
<xs:element ref="Asset" minOccurs="0" maxOccurs="1"/>
</xs:any>
</xs:complexType>
我需要一些类似的东西...(我希望它是这么简单,但可惜不是......)
<xs:complexType>
<xs:choice>
<xs:any>
<xs:element name="UserID" type="xs:string" minOccurs="1"/>
<xs:element name="Password" type="xs:string" minOccurs="1"/>
<xs:element name="ReferenceNumber" type="xs:string" minOccurs="0" maxOccurs="1"/>
<xs:element name="CustomerId" minOccurs="1" maxOccurs="1">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="0"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element ref="WhereSigned"/>
<xs:element name="ContactName" type="xs:string" minOccurs="0" maxOccurs="1"/>
<xs:element name="ContactTelephone" type="xs:string" minOccurs="0" maxOccurs="1"/>
<xs:element name="ContactFax" type="xs:string" minOccurs="0" maxOccurs="1"/>
<xs:element name="ContactEmail" type="xs:string" minOccurs="0" maxOccurs="1"/>
<xs:element ref="MainApplicant" maxOccurs="1"/>
<xs:element ref="JointApplicant" minOccurs="0" maxOccurs="1"/>
<xs:element ref="Asset" minOccurs="0" maxOccurs="1"/>
</xs:any>
<xs:any>
<xs:element name="UserID" type="xs:string" minOccurs="1"/>
<xs:element name="Password" type="xs:string" minOccurs="1"/>
<xs:element name="ReferenceNumber" type="xs:string" minOccurs="0" maxOccurs="1"/>
<xs:element name="CustomerId" minOccurs="1" maxOccurs="1">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element ref="Asset" minOccurs="0" maxOccurs="1"/>
</xs:any>
</xs:choice>
</xs:complexType>
任何 XSD 专家(这些甚至存在吗?!)谁能够伸出援助之手或提供一些建议?
【问题讨论】:
-
是否允许使用架构版本 1.1?在这种情况下,您可以断言 -
xs:assert(w3.org/TR/xmlschema11-1/#cAssertions) -
我已经研究了这些,可以看到它可以用来根据元素的值及其属性引发错误,但是我的 XSD 还不够完善,无法看到如何应用它到元素条件的条件逻辑.. :s
标签: xml web-services xsd conditional