Проверка XML на соответствие схеме, имеющей любой элемент

#schema #xml-validation

#схема #xml-проверка

Вопрос:

У меня есть схема, называемая BPMN20.xsd, имеющая элемент с именем extensionElements.смотрите пример ниже:

 <xsd:element name="extensionElements" type="tExtensionElements" /> 
    <xsd:complexType name="tExtensionElements">
        <xsd:sequence>
            <xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" /> 
        </xsd:sequence>
    </xsd:complexType>
  

Теперь xml содержит элементы внутри extensionElements, которые соответствуют другой схеме, скажем, ufl.xsd. Пример:

 <extensionElements>
    <ufl:java method="calculate"
            class="com.companyx.orchestration.bpmn.ordermanagement.data.CalculateOrderAmount">
                    <ufl:arg type="com.companyx.orchestration.bpmn.ordermanagement.data.OrderLine"
                        var="item" />
                </ufl:java>
</extensionElements>
  

Теперь я хочу проверить свой XML на соответствие обеим схемам. Как это сделать?
Если я просто проверю свой xml на соответствие BPMN20.xsd, это сработает (поскольку content if extensionElements определяется как any . Однако я также хочу проверить содержимое внутри extensionElements на соответствие ufl.xsd

Пожалуйста, помогите…

Спасибо, Сиддхартх

Ответ №1:

Используйте processContents как слабый в схеме, где вы определили любой элемент. Это принудит конвертер к поиску элемента схемы для переданного xml.