XML 架构 - 我需要确保一个元素有 2 个实例,每个实例都有一个属性
我需要确保一个元素有 2 个实例,每个实例都有一个属性。
本质上我需要两者:
/*:SalesPersonParty/*:PartyID[@schemeAgencyName="SalesPersonID"]
并且
/*:SalesPersonParty/*:PartyID[@schemeAgencyName="SalesPersonPduID"]
我有基数 2..2,但任一属性的 2 个实例都是有效的。我每样都需要一份,顺序并不重要。
以下是相关的架构组件:
<xs:simpleType name="RestrictedString">
<xs:restriction base="xs:string">
<xs:pattern value="([0-9]{3})|([0-9]{10})" />
</xs:restriction>
</xs:simpleType>
<xs:element name="SalesPersonParty" minOccurs="2" maxOccurs="2">
<xs:complexType>
<xs:sequence>
<xs:element name="PartyID" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="star:RestrictedString">
<xs:attribute name="schemeAgencyName" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="SalesPersonID" />
<xs:enumeration value="SalesPersonPduID" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
这可能吗?
谢谢和问候,
托尼
I need to make sure I have 2 instances of an element, one with each attribute.
Essentially I need both:
/*:SalesPersonParty/*:PartyID[@schemeAgencyName="SalesPersonID"]
AND
/*:SalesPersonParty/*:PartyID[@schemeAgencyName="SalesPersonPduID"]
I have cardinality 2..2 but 2 instances of either attribute is valid. I need one of each and order doesn't matter.
Here are the relevant schema components:
<xs:simpleType name="RestrictedString">
<xs:restriction base="xs:string">
<xs:pattern value="([0-9]{3})|([0-9]{10})" />
</xs:restriction>
</xs:simpleType>
<xs:element name="SalesPersonParty" minOccurs="2" maxOccurs="2">
<xs:complexType>
<xs:sequence>
<xs:element name="PartyID" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="star:RestrictedString">
<xs:attribute name="schemeAgencyName" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="SalesPersonID" />
<xs:enumeration value="SalesPersonPduID" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
Is this even possible?
Thanks and regards,
Tony
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我认为你可以通过唯一性约束来做到这一点。您必须知道
SalesPersonParty
元素的容器元素;称之为交易
。然后您需要类似的内容:这表示每个
SalesPersonParty/PartyID
必须具有唯一的schemeAgencyName
。再加上恰好有两个SalesPersonParty
元素以及枚举中只有两个可能值的约束,所有值都必须出现一次。I think you can do it with a uniqueness constraint. You'll have to know the container element for
SalesPersonParty
element; call itTransaction
. Then you need something like:This says that each
SalesPersonParty/PartyID
must have a uniqueschemeAgencyName
. Combined with the constraints of having exactly twoSalesPersonParty
elements and only two possible values in the enumeration, all values must occur once.