Я новичок в XSD 1.1 xs:assert
и получаю сообщение об ошибке при попытке проверить XML с помощью XSD:
Оценка утверждения (
MsgId eq 'ABC'
) для элементаGrpHdr
в схеме типаGroupHeader32
не удалась.
XSD
Извините, не выложил полный XSD, только его часть:
<xs:schema attributeFormDefault="unqualified" xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03"
xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
targetNamespace="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03"
xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" vc:minVersion="1.1"
xmlns:xerces="http://xerces.apache.org"> <xs:element name="Document" type="Document"/>
<xs:complexType name="Document">
<xs:sequence>
<xs:element name="CstmrCdtTrfInitn" type="CustomerCreditTransferInitiationV03"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="CustomerCreditTransferInitiationV03">
<xs:sequence>
<xs:element name="GrpHdr" type="GroupHeader32"/>
<xs:element maxOccurs="unbounded" minOccurs="1" name="PmtInf" type="PaymentInstructionInformation3"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="GroupHeader32">
<xs:sequence>
<xs:element name="MsgId" type="Max35Text"/>
<xs:element name="CreDtTm" type="ISODateTime"/>
<xs:element maxOccurs="2" minOccurs="0" name="Authstn" type="Authorisation1Choice"/>
<xs:element name="NbOfTxs" type="Max15NumericText"/>
<xs:element maxOccurs="1" minOccurs="0" name="CtrlSum" type="DecimalNumber"/>
<xs:element name="InitgPty" type="PartyIdentification32"/>
<xs:element maxOccurs="1" minOccurs="0" name="FwdgAgt" type="BranchAndFinancialInstitutionIdentification4"/>
</xs:sequence>
<xs:assert test="MsgId eq 'ABC'"/>
</xs:complexType>
</xs:schema>
Это правильное место, чтобы поставить условие xs:assert
, чтобы проверить значение элемента MsgID
равным ABC?
Я использую программное обеспечение oXygen XML для проверки.
Пример XML
<CstmrCdtTrfInitn>
<GrpHdr>
<MsgId>ABC</MsgId>
<CreDtTm>2009-02-17T12:49:35</CreDtTm>
<NbOfTxs>1</NbOfTxs>
</GrpHdr>
</CstmrCdtTrfInitn>