这是我在这个论坛上的第一篇文章。
我有一个代表pnr(航班)预订列表的xml。在这里它有一个单独的pnrs列表。 现在,如果一个pnr有一个无效字段,在再次验证xml模式时,我们会收到soap错误,并且验证似乎在第一个错误点停止。
所以基本上如果一个飞行中有100个pnrs,如果一个pnr有一个无效字段,整个响应会由于一个无效的pnr而丢失。 要求是在出现错误时拒绝pnr,并将响应与有效pnr的其余部分一起发送。
如何通过配置或以编程方式使用spring xsd验证来实现此目的。
<complexType name="DutBookings">
<sequence>
<element name="RecCount" type="long" minOccurs="1" maxOccurs="1"/>
<element name="DutBooking" type="tns:DutBooking" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</complexType>
<!-- -->
<complexType name="DutBooking">
<annotation>
<documentation>
This holds the booking record.
The frequent flyer details and airline customer value held at this level represents
the highest tier / value for all passengers associated with the booking.
</documentation>
</annotation>
<sequence>
<element name="BookingReference" type="tns:FlightBookingReference" minOccurs="0"/>
<element name="BookingDate" type="dateTime" minOccurs="0"/>
<element name="BookingStatus" type="tns:BookingStatus" minOccurs="0"/>
<element name="BookingType" type="tns:BookingType" minOccurs="0"/>
<element name="CreatingBookingOffice" type="tns:OfficeID" minOccurs="0"/>
<element name="POSCity" type="tns:CityCode" minOccurs="0"/>
<element name="POSCountry" type="tns:ISO_CountryCode" minOccurs="0"/>
<element name="NameCount" type="tns:Count" minOccurs="0">
<annotation>
<documentation>Number of real names on booking, includes infants</documentation>
</annotation>
</element>
<element name="ReservationCount" type="tns:Count" minOccurs="0">
<annotation>
<documentation>Count of passengers on booking, excludes infants</documentation>
</annotation>
</element>
<element name="MaxAirlineCustomerValue" type="int" minOccurs="0"/>
<element name="CabinCode" type="tns:CabinCode" minOccurs="0"/>
<element name="BookingClass" type="tns:SellingClass" minOccurs="0"/>
<element name="SplitCount" type="tns:Count" minOccurs="0">
<annotation>
<documentation>Number of names split from the booking</documentation>
</annotation>
</element>
<element name="SplitParentBookingReference" type="tns:FlightBookingReference" minOccurs="0"/>
<element name="StaffNumber" type="tns:StaffNumber" minOccurs="0"/>
<element name="StaffJoiningDate" type="date" minOccurs="0"/>
<element name="StaffTravelPriorityCode" type="tns:StaffTravelPriorityCode" minOccurs="0"/>
<element name="BookingPassenger" type="tns:BookingPassenger" minOccurs="0" maxOccurs="unbounded"/>
<element name="SuitabilityKeyword" type="tns:SuitabilityKeyword" minOccurs="0" maxOccurs="unbounded"/>
<element name="DutServiceLine" type="tns:DutServiceLine" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</complexType>
所以你可以看到有dutbookings元素,里面有一个dutbooking列表。如果在一次预订中有验证错误,我想继续其余的。
提前致谢。
答案 0 :(得分:0)
如果您检查整个文档,则会根据架构检查所有文档。
更加编程的方法是分别验证内部预订清单。提取预订元素列表并将有效元素重新打包到列表中,省略(并记录?)验证失败的元素。
您似乎无法选择将架构重新定义为“允许选项”或导致pnr预订失败的任何内容。然后验证会通过,但它不完全是你想要的。