我需要针对其XSD架构验证XML,我已经定义了几个"key/keyref"约束来确定所有现有的违规.但是,首次确定此类keyref违规后,JAXP XML验证程序将跳过其他人,即使它们存在.
具有两个keyref违规的xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<relations>
<keys>
<key id="1"/>
<key id="2"/>
</keys>
<refs>
<ref to="2"/><!-- This is valid because key with id 2 present -->
<!-- This two xml elements have 'keyref' constraint violation because there aren't coresponding keys with id 3,4-->
<ref to="3"/>
<ref to="4"/>
</refs>
</relations>
Run Code Online (Sandbox Code Playgroud)
xsd架构:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="relations">
<xs:complexType>
<xs:all>
<xs:element ref="keys"/>
<xs:element ref="refs"/>
</xs:all>
</xs:complexType>
<!-- Constraints Section -->
<xs:key name="key-pk">
<xs:selector xpath="keys/key" />
<xs:field xpath="@id" />
</xs:key>
<xs:keyref …Run Code Online (Sandbox Code Playgroud)