<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
  <xs:simpleType name="valueType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="string"/>
      <xs:enumeration value="integer"/>
      <xs:enumeration value="decimal"/>
      <xs:enumeration value="boolean"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="categoryType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="division"/>
      <xs:enumeration value="axis"/>
      <xs:enumeration value="value"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="documentType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="datasheet"/>
      <xs:enumeration value="ies"/>
      <xs:enumeration value="certificate"/>
      <xs:enumeration value="manual"/>
      <xs:enumeration value="drawing"/>
      <xs:enumeration value="other"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="halla-catalog">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="parameter-definitions">
          <xs:complexType><xs:sequence>
            <xs:element name="parameter" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType><xs:sequence><xs:element name="name" type="xs:string"/></xs:sequence>
                <xs:attribute name="key" type="xs:string" use="required"/>
                <xs:attribute name="value-type" type="valueType" use="required"/>
                <xs:attribute name="unit" type="xs:string"/>
              </xs:complexType>
            </xs:element>
          </xs:sequence></xs:complexType>
        </xs:element>
        <xs:element name="categories">
          <xs:complexType><xs:sequence>
            <xs:element name="category" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType><xs:sequence><xs:element name="name" type="xs:string"/></xs:sequence>
                <xs:attribute name="key" type="xs:string" use="required"/>
                <xs:attribute name="type" type="categoryType" use="required"/>
                <xs:attribute name="parent-key" type="xs:string"/>
              </xs:complexType>
            </xs:element>
          </xs:sequence></xs:complexType>
        </xs:element>
        <xs:element name="series-list">
          <xs:complexType><xs:sequence>
            <xs:element name="series" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType><xs:sequence>
                <xs:element name="name" type="xs:string"/>
                <xs:element name="description" type="xs:string" minOccurs="0"/>
                <xs:element name="marketing-description" type="xs:string" minOccurs="0"/>
                <xs:element name="category-ref" minOccurs="0" maxOccurs="unbounded"><xs:complexType><xs:attribute name="key" type="xs:string" use="required"/></xs:complexType></xs:element>
                <xs:element name="images" minOccurs="0"><xs:complexType><xs:sequence>
                  <xs:element name="image" minOccurs="0" maxOccurs="unbounded"><xs:complexType><xs:sequence><xs:element name="alt" type="xs:string" minOccurs="0"/></xs:sequence>
                    <xs:attribute name="url" type="xs:anyURI" use="required"/><xs:attribute name="roles" type="xs:string" use="required"/><xs:attribute name="color" type="xs:string"/>
                  </xs:complexType></xs:element>
                </xs:sequence></xs:complexType></xs:element>
                <xs:element name="documents" minOccurs="0"><xs:complexType><xs:sequence>
                  <xs:element name="document" minOccurs="0" maxOccurs="unbounded"><xs:complexType><xs:sequence><xs:element name="title" type="xs:string"/></xs:sequence>
                    <xs:attribute name="type" type="documentType" use="required"/><xs:attribute name="url" type="xs:anyURI" use="required"/><xs:attribute name="media-type" type="xs:string"/>
                  </xs:complexType></xs:element>
                </xs:sequence></xs:complexType></xs:element>
              </xs:sequence>
                <xs:attribute name="key" type="xs:string" use="required"/><xs:attribute name="parent-key" type="xs:string"/><xs:attribute name="url" type="xs:anyURI" use="required"/><xs:attribute name="badge" type="xs:string"/>
              </xs:complexType>
            </xs:element>
          </xs:sequence></xs:complexType>
        </xs:element>
        <xs:element name="products">
          <xs:complexType><xs:sequence>
            <xs:element name="product" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType><xs:sequence><xs:element name="name" type="xs:string"/>
                <xs:element name="specifications" minOccurs="0"><xs:complexType><xs:sequence>
                  <xs:element name="specification" minOccurs="0" maxOccurs="unbounded"><xs:complexType mixed="true"><xs:attribute name="key" type="xs:string" use="required"/></xs:complexType></xs:element>
                </xs:sequence></xs:complexType></xs:element>
              </xs:sequence>
                <xs:attribute name="article" type="xs:string" use="required"/><xs:attribute name="series-key" type="xs:string" use="required"/><xs:attribute name="url" type="xs:anyURI" use="required"/>
              </xs:complexType>
            </xs:element>
          </xs:sequence></xs:complexType>
        </xs:element>
      </xs:sequence>
      <xs:attribute name="schema-version" type="xs:string" use="required" fixed="1.0"/>
      <xs:attribute name="generated-at" type="xs:dateTime" use="required"/>
      <xs:attribute name="series-count" type="xs:nonNegativeInteger" use="required"/>
      <xs:attribute name="product-count" type="xs:nonNegativeInteger" use="required"/>
    </xs:complexType>
  </xs:element>
</xs:schema>
