Это - мое первое сообщение на этом форуме.custom xsd validation validation using spring validator
У меня есть xml, который представляет собой список заказов на pnr (рейс). Внутри этого есть список отдельных pnrs. Теперь, если есть одно недопустимое поле для одного pnr, а при проверке схемы xml снова мы получаем ошибку мыла, и проверка кажется остановленной при первой ошибке.
По существу, если в полете 100 pnrs, если один pnr получил недопустимое поле, весь ответ будет потерян из-за этого одного недействительного pnr. Требование состоит в том, чтобы отклонить pnr, если он получил ошибку, и отправить ответ с остальной частью действительного pnr.
Как добиться этого с помощью проверки весны 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. если в одном бронировании есть ошибка проверки, я хочу продолжить с остальными.
Заранее спасибо.
Все правила проверки вставляются в строчку в самой схеме. Если я попытаюсь сделать это программно, могу ли я использовать правила проверки из схемы. –
Схемы могут быть разбиты на куски. А «родительская» схема может включать другую. Таким образом, у вас могут быть «DutBookings.xsd» и «DutBooking.xsd». Я бы предположил, что этот API Spring Validation (или, по крайней мере, JAXB) будет иметь вызовы для проверки определенного элемента на конкретную схему. Вы бы контролировали поток ошибок (остановка, продолжение и т. Д.) – clay