Как получить сообщение об отсутствии элемента, если элемент не имеет значения в xml - PullRequest
0 голосов
/ 04 апреля 2019

Я попытался проверить с помощью xml против xsd, используя модуль узла libxmljs (https://github.com/libxmljs/libxmljs/wiki#validating-against-xsd-schema). Так, если элемент является обязательным в xsd, но в элементе xml не имеет никакого значения, он пуст тогда я должен получить сообщение о том, что отсутствует элемент, например,

XSD:

<xsd:complexType name="ContractSummaryComplexType">
xsd:sequence
<xsd:element name="SvcAgreementID" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>

XML:

<SvcAgreementID></SvcAgreementID>

Пожалуйста, помогите мне сделать это.

Спасибо

1 Ответ

0 голосов
/ 15 апреля 2019

Предполагается, что MyContractSummaryComplex является экземпляром ContractSummaryComplexType

Следующее должно вызвать ошибку

<MyContractSummaryComplex>
</MyContractSummaryComplex>

Действительны следующие значения:

<MyContractSummaryComplex>
    <SvcAgreementID></SvcAgreementID>
</MyContractSummaryComplex>

<MyContractSummaryComplex>
    <SvcAgreementID>ABC</SvcAgreementID>
</MyContractSummaryComplex>

Примечание <SvcAgreementID></SvcAgreementID> говоритвот элемент SvcAgreementID с пустой строкой в ​​качестве его содержимого.

Если вы хотите применить правило, гласящее, что SvcAgreementID должен содержать хотя бы 1 символ, тогда вам нужно что-то вроде этого

<?xml version="1.0" encoding="utf-8" ?>
<!--Created with Liquid Studio 2019 (https://www.liquid-technologies.com)-->
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:complexType name="ContractSummaryComplexType">
        <xs:sequence>
            <xs:element name="SvcAgreementID">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:minLength value="1" />
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
</xs:schema>
...