xsdxsd-1.0

XML Schema for a fixed element with a fixed attribute?


What would be the correct XML Schema 1.0 declaration for a

<notice xml:lang="en">Banana banana banana</notice>

where:

  1. The xml:lang attribute is compulsory
  2. The value "en" is fixed and compulsory
  3. The content of notice is simple text.
  4. The content of notice is fixed (as above) and compulsory?

My best (but wrong) effort is the following fragment:

<xs:element name="notice" use="required" fixed="Banana banana banana">
  <xs:complexType>
    <xs:simpleContent>
      <xs:extension>
        <xs:attribute ref="xml:lang" use="required" fixed="en"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
</xs:element>

Solution

  • <?xml version="1.0" encoding="utf-8"?>
    <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
      <xs:import namespace="http://www.w3.org/XML/1998/namespace" />
      <xs:element name="notice" type="notice"/>
        <xs:complexType name="notice">
          <xs:simpleContent>
            <xs:extension base="CONTENT">
              <xs:attribute ref="xml:lang" use="required" fixed="en"/>
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      <xs:simpleType name="CONTENT">
        <xs:restriction base="xs:string">
          <xs:enumeration value="Banana banana banana"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:schema>