XML& XSD验证失败:元素具有“类型”属性和“匿名类型”子元素

时间:2014-01-10 11:27:02

标签: xml xslt xml-parsing xsd

我有一个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>

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>

可能是什么问题?

1 个答案:

答案 0 :(得分:23)

问题正是错误消息所说的地方:

<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>

对于同一type="xs:string",您不能同时拥有complexType和嵌套element

如果您希望UC4元素只包含属性而没有嵌套文本内容,请删除type属性

<xs:element name="UC4" minOccurs="0">
  <xs:complexType>
    <xs:attribute name="Server" type="xs:string" use="required"/>
    <!-- ... -->

如果您希望它具有 属性字符串内容

<UC4 Server="UC4.com" Client="123" UserId="123" Password="*****">content</UC4>

然后你需要一个嵌套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>

{{1}}