<?xml version="1.0" encoding="UTF-8"?>

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            elementFormDefault="qualified"
            attributeFormDefault="unqualified"
            targetNamespace="http://bluprints.sourceforge.net/schemas/0.4"
            xmlns="http://bluprints.sourceforge.net/schemas/0.4">
  <xsd:complexType name="parameter">
    <xsd:annotation>
      <xsd:documentation>
        This element defines a simple parameter for a bluprint. This is name value pair.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:attribute name="name" type="xsd:string" use="required"/>
    <xsd:attribute name="value" type="xsd:string" use="required"/>
  </xsd:complexType>

  <xsd:complexType name="content">
    <xsd:annotation>
      <xsd:documentation>
        This element defines the content for a bluprint and is optional.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="bluprint" type="bluprint" minOccurs="1" maxOccurs="unbounded"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="bluprint">
    <xsd:annotation>
      <xsd:documentation>
        This element defines a bluprint.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="parameter" type="parameter" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element name="content" type="content" minOccurs="0" maxOccurs="1"/>
    </xsd:sequence>
    <xsd:attribute name="name" type="xsd:string" use="required"/>
    <xsd:attribute name="uri" type="xsd:string" use="optional"/>
    <xsd:attribute name="extends" type="xsd:string" use="optional"/>
  </xsd:complexType>

  <xsd:element name="bluprints">
    <xsd:annotation>
      <xsd:documentation>
        This element is the root element and can store any number of bluprint definitions.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="bluprint" type="bluprint" minOccurs="1" maxOccurs="unbounded"/>
      </xsd:sequence>
      <xsd:attribute name="namespace" type="xsd:string" use="optional"/>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>