log*_*gan 12 xml xslt xsd xml-parsing
我有一个XML文件和一个XSD文件来验证.当我验证时,它显示以下错误.
org.xml.sax.SAXParseException:src-element.3:元素'UC4'同时具有'type'属性和'anonymous type'子元素.元素中只允许其中一个.
XML文件:
<UC4Execution>
<Script>JOB_NAME</Script>
<UC4 Server="UC4.com" Client="123" UserId="123" Password="*****" >
</UC4 >
</UC4Execution>
Run Code Online (Sandbox Code Playgroud)
XSD文件:
<xs:element name="UC4Execution">
<xs:complexType>
<xs:sequence>
<xs:element name="Script" type="xs:string"/>
<xs:element name="UC4" type="xs:string" 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>
Run Code Online (Sandbox Code Playgroud)
可能是什么问题?
Ian*_*rts 25
问题正是错误消息所说的位置:
<xs:element name="UC4" type="xs:string" 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>
Run Code Online (Sandbox Code Playgroud)
你不能同时拥有type="xs:string"和嵌套complexType相同element.
如果您希望UC4元素只具有属性而没有嵌套的文本内容,则删除该type属性
<xs:element name="UC4" minOccurs="0">
<xs:complexType>
<xs:attribute name="Server" type="xs:string" use="required"/>
<!-- ... -->
Run Code Online (Sandbox Code Playgroud)
如果你希望它有两个属性和字符串内容
<UC4 Server="UC4.com" Client="123" UserId="123" Password="*****">content</UC4>
Run Code Online (Sandbox Code Playgroud)
那么你需要一个嵌套complexType与simpleContent扩展xs:string
<xs:element name="UC4" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<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:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
Run Code Online (Sandbox Code Playgroud)