Question

Right now oxygen is telling me to terminate complex type despite it already being terminated. Why is that happening? I tried removing the simpleType. I tried taking out the complex type and it still won't accept it. Here is the code.

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://www.engr.iupui.edu/~efernand/account" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:account="http://www.engr.iupui.edu/~efernand/account">
  <xs:element name="account">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="account:owner"/>
        <xs:choice maxOccurs="unbounded">
          <xs:element ref="account:deposit"/>
          <xs:element ref="account:payment"/>
        </xs:choice>
      </xs:sequence>
      <xs:attribute name="number" use="required" type="xs:NCName"/>
      <xs:attribute name="type" use="required" />
        <xs:simpleType>
          <xs:restriction base="xs:NCName">
            <xs:enumeration value="direct"/>
            <xs:enumeration value="check"/>
            <xs:enumeration value="cash"/>
            <xs:enumeration value="transfer"/>
            <xs:enumeration value="atm" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute> <!--ERROR HERE--> 
    </xs:complexType> 
  </xs:element>
  <xs:element name="owner">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="account:name"/>
        <xs:element ref="account:address"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="name">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="account:first"/>
        <xs:element ref="account:last"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="first" type="xs:NCName"/>
  <xs:element name="last" type="xs:NCName"/>
  <xs:element name="address">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="account:street"/>
        <xs:element ref="account:city"/>
        <xs:element ref="account:state"/>
        <xs:element ref="account:zip"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="street" type="xs:string"/>
  <xs:element name="city" type="xs:NCName"/>
  <xs:element name="state">
    <xs:simpleType>
      <xs:restriction base="xs:NCName">
        <xs:pattern value="[a-zA-Z]{2}"/>      
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="zip" type="xs:integer"/>
  <xs:element name="deposit">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="account:from"/>
        <xs:element ref="account:amount"/>
        <xs:element ref="account:date"/>
        <xs:element minOccurs="0" ref="account:description"/>
      </xs:sequence>
      <xs:attribute name="type" use="required" type="xs:NCName"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="from">
    <xs:complexType mixed="true">
      <xs:attribute name="category" use="required" type="xs:NCName"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="payment">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="account:to"/>
        <xs:element ref="account:amount"/>
        <xs:element ref="account:date"/>
        <xs:element minOccurs="0" ref="account:description"/>
      </xs:sequence>
      <xs:attribute name="checknum">
        <xs:simpleType>
          <xs:restriction base="xs:NCName">
            <xs:pattern value="C[0-9]{4}"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>

      <xs:attribute name="type" use="required" type="xs:NCName"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="to">
    <xs:complexType mixed="true">
      <xs:attribute name="category" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:NCName">
            <xs:enumeration value="income" />
            <xs:enumeration value="other"/>
            <xs:enumeration value="cash"/>
            <xs:enumeration value="food"/>
            <xs:enumeration value="utilites"/>
            <xs:enumeration value="clothing"/>
            <xs:enumeration value="savings"/>
            <xs:enumeration value="entertainment"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:element name="amount" type="xs:decimal"/>
    <xs:simpleType name="amount">
      <xs:restriction base="xs:decimal">
        <xs:minExclusive value="0"/>
        <xs:fractionDigits value="2"/>
      </xs:restriction>
    </xs:simpleType> 
  <xs:element name="date" type="xs:date"/>
    <xs:simpleType name="date">
      <xs:restriction base="xs:date">
        <!--No month number begins with 2-->
        <xs:pattern value="[0-9]{4}-[0-1][0-9]-[0-9]{2}"/>
      </xs:restriction>
    </xs:simpleType>
  <xs:element name="description" type="xs:string"/>
</xs:schema>
Was it helpful?

Solution

<xs:attribute name="type" use="required" />

I don't think you want the / there.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top