我有2个架构。
第一:
<?xml version="1.0" encoding="utf-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="ns1"
elementFormDefault="qualified">
<element name="A" type="string"/>
</schema>
第二
<?xml version="1.0" encoding="utf-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="ns2"
xmlns:ns1="ns1"
elementFormDefault="qualified">
<element name="B">
<complexType>
<sequence>
<element ref="ns1:A"/>
</sequence>
</complexType>
</element>
</schema>
所以在实例xml中我可以使用2个根元素 例1:
<?xml version="1.0" encoding="utf-8" ?>
<A xmlns="ns1">sdfdfd</A>
示例2:
<?xml version="1.0" encoding="utf-8" ?>
<B xmlns="ns2"><A xmlns="ns1">sdfdfd</A></B>
如何仅允许示例2?
答案 0 :(得分:1)
这取决于架构验证程序的API。
通常,如果元素对模式有效,那么该元素的每个子元素也是有效的:因此,如果第二个实例有效,则第一个实例也是有效的,因为XSD验证元素而不是文档。
但是,架构验证程序可能允许您指定根节点以进行验证。例如,如果使用Saxon作为模式验证器,则可以从命令行指定
机顶:{NS2}乙
请参阅http://www.saxonica.com/documentation/schema-processing/commandline.xml