XML 架构 - 我需要确保一个元素有 2 个实例,每个实例都有一个属性

发布于 2024-12-08 15:35:56 字数 1749 浏览 0 评论 0原文

我需要确保一个元素有 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

同尘 2024-12-15 15:35:56

我认为你可以通过唯一性约束来做到这一点。您必须知道 SalesPersonParty 元素的容器元素;称之为交易。然后您需要类似的内容:

<xs:element name="Transaction">
  ...
  <xs:unique name="uniqueAgencyNameConstraint">
    <xs:selector xpath="SalesPersonParty/PartyID">
    <xs:field xpath="@schemeAgencyName"/>
  </xs:unique>
</xs:element>

这表示每个 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 it Transaction. Then you need something like:

<xs:element name="Transaction">
  ...
  <xs:unique name="uniqueAgencyNameConstraint">
    <xs:selector xpath="SalesPersonParty/PartyID">
    <xs:field xpath="@schemeAgencyName"/>
  </xs:unique>
</xs:element>

This says that each SalesPersonParty/PartyID must have a unique schemeAgencyName. Combined with the constraints of having exactly two SalesPersonParty elements and only two possible values in the enumeration, all values must occur once.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文