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>
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.
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.
The label attribute of facet is set to xs:ID and this doesn't allow spaces. You might want to use xs:string instead.
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>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With