Я звоню в веб-службу, и я хотел бы проверить ответ мыла с помощью проверки xsd. Я действительно не хочу выполнять строгую проверку xsd, я просто хочу знать, присутствует ли в ответе какой-либо элемент «История».
Таким образом, проверка xsd должна быть успешной, когда есть «Элемент истории», и завершаться ошибкой, когда этот элемент отсутствует. Я начал с xsd ниже. Я просто хочу расширить его своим обязательным элементом «История». Как я могу этого добиться?
XSD:
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:ns="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
targetNamespace="http://schemas.xmlsoap.org/soap/envelope/"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xsd:element name="Envelope">
<xsd:complexType>
<xsd:sequence>
<xsd:any namespace="##any" minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Мыльный ответ
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header/>
<soapenv:Body>
<p793:TuDetailsResponse xmlns:p793="http://gls-group.eu/Tracking/">
<p793:History>
<p793:Date>
<p793:Year>2012</p793:Year>
<p793:Month>10</p793:Month>
<p793:Day>12</p793:Day>
<p793:Hour>9</p793:Hour>
<p793:Minut>52</p793:Minut>
<p793:ReasonName/>
</p793:History>
<p793:History>
<p793:Date>
<p793:Year>2012</p793:Year>
<p793:Month>10</p793:Month>
<p793:Day>12</p793:Day>
<p793:Hour>5</p793:Hour>
<p793:Minut>45</p793:Minut>
</p793:Date>
<p793:ReasonName/>
</p793:History>
</p793:TuDetailsResponse>
</soapenv:Body>
</soapenv:Envelope>