cvc-complex-type.2.3:元素'group'不能有字符[children],因为类型的内容类型只是元素

时间:2017-02-02 19:16:22

标签: xml xsd xsd-validation xml-validation

我需要从此XSD创建XML:

 <?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
    xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="group">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="person" minOccurs="5" maxOccurs="20" type="xs:string"/>
            </xs:sequence>
            <xs:attribute name="name" use="required" type="xs:string"/>
        </xs:complexType>
    </xs:element>
</xs:schema>

以下是我尝试过的XML:

<?xml version="1.0" ?>
<group name="abcd">
    xmlns="www.example.org"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="ex1.xsd">
    <person>Joao</person>
    <person>Andre</person>
    <person>Filipe</person>
    <person>Joaquim</person>
    <person>Rui</person>
</group>

我收到此错误:

  

无效。   错误 - 第10行,第9行:org.xml.sax.SAXParseException; lineNumber:10; columnNumber:9; cvc-complex-type.2.3:元素'group'不能有字符[children],因为类型的内容类型只是元素。

3 个答案:

答案 0 :(得分:1)

问题数量:

  • 正如Filburt所说,你过早地关闭了开幕式group 标签。这是您立即出错的直接原因。它导致 解析器将您想要的属性误解为文本 内容到group元素。
  • schemaLocation必须使用namespace-XSD
  • elementFormDefault="qualified"

总之,以下XSD将成功验证以下XML。

XSD

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://www.example.org"
           elementFormDefault="qualified">
  <xs:element name="group">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="person" minOccurs="5" maxOccurs="20" type="xs:string"/>
      </xs:sequence>
      <xs:attribute name="name" use="required" type="xs:string"/>
    </xs:complexType>
  </xs:element>
</xs:schema>

XML

<?xml version="1.0" ?>
<group name="abcd"
       xmlns="http://www.example.org"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.example.org ex1.xsd">
  <person>Joao</person>
  <person>Andre</person>
  <person>Filipe</person>
  <person>Joaquim</person>
  <person>Rui</person>
</group>

答案 1 :(得分:0)

更改&#39;组&#39; XSD中的定义包括mixed =&#34; true&#34;

<xs:element name="group">
    <xs:complexType mixed="true">

答案 2 :(得分:0)

当我从Skype复制一个插入了奇怪编码的代码时遇到了这个错误。解决方案是删除粘贴的代码,然后手工重写所有错误的编码部分,而没有任何粘贴的编码字符。