8

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>
kjhughes
  • 106,133
  • 27
  • 181
  • 240
Sean B. Durkin
  • 12,659
  • 1
  • 36
  • 65

1 Answers1

10
<?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>
Rookie Programmer Aravind
  • 11,952
  • 23
  • 81
  • 114
  • Thanks. Only one thing wrong with this is that it does not enforce "en" as the xml:lang . I think that this can be achieved by adding a fixed="en" attribute to the xs:attribute node of your solution. – Sean B. Durkin Mar 14 '12 at 12:16