Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Tags:

xml

schema

xsd

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>
like image 514
Boaz Avatar asked Sep 09 '09 13:09

Boaz


People also ask

What does error whitespace not accepted mean?

Whitespace error can be caused by either an unsupported character or symbol being passed to the gateway, or a blank or white space being left in a field. Most commonly, the Whitespace error is caused by characters or symbols that are not supported by global XML code being passed to the gateway.

Is white space allowed in XML?

In XML documents, there are two types of whitespace: Significant whitespace is part of the document content and should be preserved. Insignificant whitespace is used when editing XML documents for readability. These whitespaces are typically not intended for inclusion in the delivery of the document.


2 Answers

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

like image 66
Wim ten Brink Avatar answered Oct 03 '22 05:10

Wim ten Brink


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>
like image 33
janko Avatar answered Oct 03 '22 06:10

janko