Web サービスを呼び出しており、xsd 検証を使用して SOAP 応答を検証したいと考えています。厳密な xsd 検証は実際には行いたくありません。応答に要素「History」が存在するかどうかを知りたいだけです。
したがって、「履歴要素」がある場合は 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>