我尝试使用节点模块libxmljs(https://github.com/libxmljs/libxmljs/wiki#validating-against-xsd-schema)对xsd进行xml验证。如果元素在xsd中是必需的,但在xml元素中没有任何值,它是空的然后我应该得到错误,说缺少元素,例如,
XSD:
<xsd:complexType name="ContractSummaryComplexType">
xsd:sequence
<xsd:element name="SvcAgreementID" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
XML:
<SvcAgreementID></SvcAgreementID>
请帮我这样做。
谢谢
假设MyContractSummaryComplex是Contract Summary ComplexType的实例
以下应该引发错误
<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>