我有一个XML文件和一个XSD文件来验证。
XML文件:
<UC4Execution>
<Script>JOB_NAME</Script>
<UC4 Server="UC4.com" Client="123" UserId="123" Password="*****" >
</UC4 >
</UC4Execution>
如果我先带下来,那么验证失败。
我希望标签在主标签内部灵活。我该如何管理/验证
XSD文件:
<xs:element name="UC4Execution">
<xs:complexType>
<xs:sequence>
<xs:element name="Script" type="xs:string"/>
<xs:element name="UC4" minOccurs="0">
<xs:complexType>
<xs:attribute name="Server" type="xs:string" use="required"/>
<xs:attribute name="Client" type="xs:string" use="required"/>
<xs:attribute name="UserId" type="xs:string" use="required"/>
<xs:attribute name="Password" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
可能是什么问题?
答案 0 :(得分:2)
如果您想允许订单Script, UC4
以及UC4, Script
,请使用xs:all
代替xs:sequence
。
答案 1 :(得分:1)
如果您使用xs:all
而不是xs:sequence
,UC4Execution
的子女将无法获得所需的订单:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="UC4Execution">
<xs:complexType>
<xs:all>
<xs:element name="Script" type="xs:string"/>
<xs:element name="UC4" minOccurs="0">
<xs:complexType>
<xs:attribute name="Server" type="xs:string" use="required"/>
<xs:attribute name="Client" type="xs:string" use="required"/>
<xs:attribute name="UserId" type="xs:string" use="required"/>
<xs:attribute name="Password" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
</xs:all>
</xs:complexType>
</xs:element>
</xs:schema>
所以这个XML文档实例
<UC4Execution>
<Script>JOB_NAME</Script>
<UC4 Server="UC4.com" Client="123" UserId="123" Password="*****" />
</UC4Execution>
和这一个:
<UC4Execution>
<UC4 Server="UC4.com" Client="123" UserId="123" Password="*****" />
<Script>JOB_NAME</Script>
</UC4Execution>
有效。