What does the error "The element cannot contain white space. Content model is empty." mean?

13,762

Solution 1

The label attribute of facet is set to xs:ID and this doesn't allow spaces. You might want to use xs:string instead.

Solution 2

There are several problem in our schema as others have already mentioned. Try something like this:

The extensible schema:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <!-- never used; just to be extended -->
    <xs:complexType name="sectionBaseType" abstract="true">
        <xs:attribute name="name" type="xs:ID"/>
    </xs:complexType>

    <!-- extension of the sectionBaseType -->
    <xs:complexType name="sectionSpecialized">
        <xs:complexContent>
            <xs:extension base="sectionBaseType">
                <xs:sequence>
                    <xs:element name="facet" type="leftToTheReaderType"
                        maxOccurs="unbounded"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>

    <!-- config may contain a single section or one of its extensions -->
    <xs:complexType name="configType">
        <xs:sequence>
            <xs:element name="section" type="sectionBaseType"/>
        </xs:sequence>
    </xs:complexType>

    <!-- a single root node called "config" -->
    <xs:element name="config" type="configType"/>
</xs:schema>

How to use the schema:

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <!-- note the xsi:type to specify the actual type of the section!! -->
    <section name="facets"
        xsi:type="sectionSpecialized">
        <facet .../>
        <facet .../>
        <facet .../> 
        <facet .../>
    </section>
</config>
Share:
13,762
Boaz
Author by

Boaz

Updated on June 09, 2022

Comments

  • Boaz
    Boaz almost 2 years

    I'm putting together an xml schema for a simple xml (see bellow for both xml and schema). But I keep getting the following error with regards to the section node: "The element cannot contain white space. Content model is empty." . Browsing the net I could not find any concise explanation as to what it means so I can fix it. Can anyone help?

    Edit: thanks for all for offering help with the schema. I think it would help to have a concise description of what content model is and why it is empty here.

    XML:

    <config>
       <section name="facets">
          <facet type="format" label="Format" max="4"/>
          <facet type="language" max="4"/>
          <facet type="pubdate" max="6" submax="8"/> 
          <facet type="ice_topic" label="Fiction: Topic"/>
       </section>
    </config>
    

    Schema:

    <?xml version="1.0" encoding="utf-8"?>
    <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
       <xs:element name="config">
          <xs:complexType>
             <xs:sequence>
                <xs:element name="section" type="sectionBase"/>
             </xs:sequence>
          </xs:complexType>
       </xs:element>
       <xs:complexType name="sectionBase">
          <xs:attribute name="name" type="xs:ID"/>
       </xs:complexType>
    
    
       <xs:complexType name="sectionFacets" >
          <xs:complexContent>
             <xs:extension base="sectionBase">
                <xs:sequence>
                   <xs:element name="facet" type="sectionFacetsBaseFacet"/>
                </xs:sequence>
             </xs:extension>
          </xs:complexContent>
       </xs:complexType>
       <xs:complexType name="sectionFacetsBaseFacet">
          <xs:attribute name="label" type="xs:ID"/>
          <xs:attribute name="max" type="xs:positiveInteger"/>
       </xs:complexType>
       <xs:complexType name="sectionFacetsFormat">
          <xs:complexContent>
             <xs:extension base="sectionFacetsBaseFacet"/>
          </xs:complexContent>
       </xs:complexType>
       <xs:complexType name="sectionFacetsPubdate">
          <xs:complexContent>
             <xs:extension base="sectionFacetsBaseFacet">
                <xs:attribute name="submax" type="xs:positiveInteger"/>
             </xs:extension>
          </xs:complexContent>
    
       </xs:complexType>
    </xs:schema>