Возможно ли иметь элемент в схеме XSD только в случае определенного значения для другого элемента в схеме?

Моя XML-схема выглядит так:

<element name="PurchaseOrderInformation">
    <complexType>
        <sequence>
            <element ref="pidx:PurchaseOrderNumber"/>
            <element ref="pidx:PurchaseOrderIssuedDate" minOccurs="0"/>
            <element ref="pidx:PurchaseOrderTypeCode" minOccurs="0"/>
            <element ref="pidx:ReleaseNumber" minOccurs="0"/>
            <element ref="pidx:SalesOrderNumber" minOccurs="0"/>
            <element ref="pidx:RevisionNumber" minOccurs="0"/>
        </sequence>
    </complexType>
</element>
<element name="PurchaseOrderIssuedDate" type="date"/>
<element name="PurchaseOrderLineItemNumber" type="string"/>

Всякий раз, когда имя клиента «ABC», мне нужно иметь элемент PurchaseOrderLineItemNumber в сложном типе PurchaseOrderInformation.

Есть ли способ добиться этого?


person user2885928    schedule 11.01.2017    source источник


Ответы (1)


XSD 1.0

Ограничение значений элементов на основе других элементов невозможно в XSD 1.0.

XSD 1.1

В XSD 1.1 есть утверждения, которые позволяют изменять ограничения в зависимости от значений в документе. Если XSD 1.1 не подходит (поскольку он не подходит для libxml, .NET и т. д.), такие проверки должны выполняться вне XSD.

person kjhughes    schedule 11.01.2017