<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://josm.openstreetmap.de/preferences-1.0"
    xmlns:tns="http://josm.openstreetmap.de/preferences-1.0" elementFormDefault="qualified">

    <element name="preferences" type="tns:root"/>

    <complexType name="root">
        <choice minOccurs="0" maxOccurs="unbounded">
            <element name="tag" type="tns:tag" />
            <element name="list" type="tns:list" />
            <element name="lists" type="tns:lists" />
            <element name="maps" type="tns:maps" />
        </choice>
        <attribute name="version" type="string" />
    </complexType>

    <complexType name="tag">
        <attribute name="key" type="string" use="required" />
        <attribute name="value" type="string" use="required"/>
    </complexType>

    <complexType name="list">
        <sequence>
            <element name="entry" type="tns:entry" minOccurs="0" maxOccurs="unbounded"/>
        </sequence>
        <attribute name="key" type="string" use="required" />
    </complexType>
    
    <complexType name="lists">
        <sequence>
            <element name="list" type="tns:slist" minOccurs="0" maxOccurs="unbounded"/>
        </sequence>
        <attribute name="key" type="string" use="required" />
    </complexType>

    <complexType name="maps">
        <sequence>
            <element name="map" type="tns:map" minOccurs="0" maxOccurs="unbounded"/>
        </sequence>
        <attribute name="key" type="string" use="required" />
    </complexType>

    <complexType name="slist">
        <sequence>
            <element name="entry" type="tns:entry" minOccurs="0" maxOccurs="unbounded"/>
        </sequence>
    </complexType>

    <complexType name="map">
        <sequence>
            <element name="tag" type="tns:tag" minOccurs="0" maxOccurs="unbounded"/>
        </sequence>
    </complexType>

    <complexType name="entry">
        <attribute name="value" type="string" use="required"/>
    </complexType>
</schema>
