<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="https://www.w3schools.com"
xmlns="https://www.w3schools.com"
elementFormDefault="qualified">

<xs:element name="instruction">
  <xs:complexType mixed="true">
    <xs:sequence minOccurs="0" maxOccurs="unbounded">
      <xs:element name="part"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

<xs:element name="part">
  <xs:complexType mixed="true">
    <xs:sequence minOccurs="0" maxOccurs="unbounded">
      <xs:element name="step"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

<xs:element name="step">
  <xs:complexType mixed="true">
    <xs:choice maxOccurs="unbounded">
      <xs:element name="ring"/> <!-- Magic Ring or Fadenring -->
      <xs:element name="chain-stitch"/> <!-- Luftmasche -->
      <xs:element name="slip-stitch"/> <!-- Luftmasche -->
      <xs:element name="single-crotchet"/> <!-- Feste Masche -->
      <xs:element name="half-double-crotchet"/> <!-- Halbes Stäbchen -->
      <xs:element name="double-crotchet"/> <!-- Stäbchen -->
      <xs:element name="treble-crotchet"/> <!-- Doppeltes Stäbchen -->
      <xs:element ref="step" minOccurs="0" maxOccurs="unbounded" />
    </xs:choice>
    <xs:attribute name="type" type="xs:string" use="required"/>
    <xs:attribute name="times" type="xs:integer" default="1"/>
  </xs:complexType>
</xs:element>

<xs:element name="ring">
  <xs:complexType>
    <xs:attribute name="color" type="xs:string" default="black"/>
  </xs:complexType>
</xs:element>

<xs:element name="chain-stitch" type="stitch"/>
<xs:element name="slip-stitch" type="stitch"/>
<xs:element name="single-crotchet" type="stitch"/>
<xs:element name="half-double-crotchet" type="stitch"/>
<xs:element name="double-crotchet" type="stitch"/>
<xs:element name="treble-crotchet" type="stitch"/>


<xs:complexType name="stitch">
  <xs:attribute name="color" type="xs:string" default="black"/>
  <xs:attribute name="times" type="xs:integer" default="1"/>
</xs:complexType>

</xs:schema>
