Я хочу проверить xml-запрос мыла на заданный xsd. Запрос может быть огромным, поэтому я не могу просто извлечь содержимое тела мыла и выполнить проверку, вместо этого я выполняю проверку на основе потоковой передачи. Я уже сделал xsd для тела мыла (часть запроса), и он не содержит никакой информации о заголовках мыла, поэтому проверка не удалась. Что я сделал, так это импортировал схему мыла в свой xsd, чтобы валидатор мог идентифицировать заголовки мыла. Это сработало, но проверка проходит успешно, даже если тело мыла ничего не содержит. Как мы можем указать в xsd, что тело мыла должно содержать хотя бы определенный элемент? Мой модифицированный xsd вставлен ниже. благодаря.
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema attributeFormDefault="qualified" targetNamespace="urn:sample"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="sample">
<xsd:import namespace="http://schemas.xmlsoap.org/soap/envelope/"
schemaLocation="http://schemas.xmlsoap.org/soap/envelope/"/>
<xsd:complexType name="type1">
<xsd:sequence>
<xsd:element name="item" type="tns:type2" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="type3">
<xsd:sequence>
<xsd:element name="item" type="tns:type4" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="element1">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="RETURN" type="tns:type3" minOccurs="0"/>
<xsd:element name="HEADER" type="tns:type1"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="element2">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="RETURN" type="tns:type3" minOccurs="0"/>
<xsd:element name="ERRORS" type="xsd:int"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>