<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
        <xs:element name="print-config">
                <xs:complexType>
                        <xs:sequence>
                                <xs:element ref="scale" maxOccurs="unbounded"/>
                                <xs:element ref="resolution" maxOccurs="unbounded"/>
                                <xs:element ref="template" maxOccurs="unbounded"/>
                        </xs:sequence>
                </xs:complexType>
                <xs:key name="UNIQUE_RESOLUTION_DESCRIPTION_CHECK">
                        <xs:selector xpath="./resolution"/>
                        <xs:field xpath="@description"/>
                </xs:key>
                <xs:key name="UNIQUE_RESOLUTION_VALUE_CHECK">
                        <xs:selector xpath="./resolution"/>
                        <xs:field xpath="@value"/>
                </xs:key>
                <xs:key name="UNIQUE_SCALE_DESCRIPTION_CHECK">
                        <xs:selector xpath="./scale"/>
                        <xs:field xpath="@description"/>
                </xs:key>
                <xs:key name="UNIQUE_SCALE_VALUE_CHECK">
                        <xs:selector xpath="./scale"/>
                        <xs:field xpath="@value"/>
                </xs:key>
                <xs:key name="UNIQUE_TEMPLATE_NAME_CHECK">
                        <xs:selector xpath="./template"/>
                        <xs:field xpath="@name"/>
                </xs:key>
        </xs:element>
        <xs:element name="box">
                <xs:complexType>
                        <xs:attribute name="position" type="TYPE_XY" use="required"/>
                        <xs:attribute name="size" type="TYPE_XY" use="required"/>
                        <xs:attribute name="fill-color" type="TYPE_COLOR" use="optional"/>
                        <xs:attribute name="outline-color" type="TYPE_COLOR" use="optional" default="0,0,0"/>
                        <xs:attribute name="outline-width" type="TYPE_POSITIVE_DECIMAL" use="optional" default="1"/>
                </xs:complexType>
        </xs:element>
        <xs:element name="centercoordinatetext">
                <xs:complexType>
                        <xs:attribute name="position" type="TYPE_XY" use="required"/>
                        <xs:attribute name="alignment" type="TYPE_ALIGNMENT" use="required"/>
                        <xs:attribute name="font" type="TYPE_FONT" use="optional" default="helvetica_bold"/>
                        <xs:attribute name="font-size" type="xs:positiveInteger" use="optional" default="18"/>
                </xs:complexType>
        </xs:element>
        <xs:element name="datetext">
                <xs:complexType>
                        <xs:attribute name="position" type="TYPE_XY" use="required"/>
                        <xs:attribute name="alignment" type="TYPE_ALIGNMENT" use="required"/>
                        <xs:attribute name="format" type="TYPE_DATE" use="optional" default="date_medium"/>
                        <xs:attribute name="font" type="TYPE_FONT" use="optional" default="helvetica"/>
                        <xs:attribute name="font-size" type="xs:positiveInteger" use="optional" default="9"/>
                        <xs:attribute name="prefix" type="xs:string" use="optional"/>
                        <xs:attribute name="suffix" type="xs:string" use="optional"/>
                        <xs:attribute name="locale-language" type="xs:string" use="optional" default="en"/>
                        <xs:attribute name="locale-country" type="xs:string" use="optional" default="US"/>
                        <xs:attribute name="locale-variant" type="xs:string" use="optional"/>
                </xs:complexType>
        </xs:element>
        <xs:element name="image">
                <xs:complexType>
                        <xs:attribute name="position" type="TYPE_XY" use="required"/>
                        <xs:attribute name="size" type="TYPE_XY" use="optional"/>
                        <xs:attribute name="url" type="xs:token" use="required"/>
                </xs:complexType>
        </xs:element>
        <xs:element name="indexmap">
                <xs:complexType>
                        <xs:attribute name="position" type="TYPE_XY" use="required"/>
                        <xs:attribute name="size" type="TYPE_XY" use="required"/>
                        <xs:attribute name="type" type="TYPE_INDEXMAP" use="optional" default="crosshair"/>
                        <xs:attribute name="dpi" type="xs:positiveInteger" use="optional" default="72"/>
                </xs:complexType>
        </xs:element>
        <xs:element name="latlongraticule">
                <xs:complexType>
                        <xs:attribute name="maximum-intervals" type="xs:positiveInteger" use="optional" default="6"/>
                </xs:complexType>
        </xs:element>
        <xs:element name="legend">
                <xs:complexType>
                        <xs:attribute name="position" type="TYPE_XY" use="required"/>
                        <xs:attribute name="size" type="TYPE_XY" use="required"/>
                        <xs:attribute name="dpi" type="xs:positiveInteger" use="optional" default="72"/>
                        <xs:attribute name="columns" type="xs:positiveInteger" use="optional" default="1"/>
                        <xs:attribute name="layer-font-size" type="xs:positiveInteger" use="optional" default="10"/>
                        <xs:attribute name="value-font-size" type="xs:positiveInteger" use="optional" default="9"/>
                        <xs:attribute name="swatch-width" type="xs:decimal" use="optional"/>
                        <xs:attribute name="swatch-height" type="xs:decimal" use="optional"/>
                        <xs:attribute name="cell-spacing" type="xs:positiveInteger" use="optional" default="3"/>
                </xs:complexType>
        </xs:element>
        <xs:element name="line">
                <xs:complexType>
                        <xs:attribute name="from" type="TYPE_XY" use="required"/>
                        <xs:attribute name="to" type="TYPE_XY" use="required"/>
                        <xs:attribute name="width" type="TYPE_POSITIVE_DECIMAL" use="optional" default="1"/>
                        <xs:attribute name="color" type="TYPE_COLOR" use="optional"/>
                </xs:complexType>
        </xs:element>
        <xs:element name="map">
                <xs:complexType>
                        <xs:attribute name="position" type="TYPE_XY" use="required"/>
                        <xs:attribute name="size" type="TYPE_XY" use="required"/>
                </xs:complexType>
        </xs:element>
        <xs:element name="northarrow">
                <xs:complexType>
                        <xs:attribute name="position" type="TYPE_XY" use="required"/>
                        <xs:attribute name="size" type="TYPE_XY" use="optional"/>
                        <xs:attribute name="url" type="xs:token" use="required"/>
                        <xs:attribute name="maximum-scale" type="xs:decimal" use="optional"/>
                </xs:complexType>
        </xs:element>
        <xs:element name="paragraph">
                <xs:complexType>
                        <xs:attribute name="alignment" type="TYPE_ALIGNMENT" use="optional" default="left"/>
                        <xs:attribute name="font" type="TYPE_FONT" use="optional" default="helvetica"/>
                        <xs:attribute name="position" type="TYPE_XY" use="required"/>
                        <xs:attribute name="size" type="TYPE_XY" use="required"/>
                        <xs:attribute name="font-size" type="xs:positiveInteger" use="optional" default="9"/>
                        <xs:attribute name="line-height" type="xs:positiveInteger" use="optional" default="12"/>
                        <xs:attribute name="text" type="xs:string" use="required"/>
                </xs:complexType>
        </xs:element>
        <xs:element name="prompt">
                <xs:complexType>
                        <xs:attribute name="alignment" type="TYPE_ALIGNMENT" use="optional" default="left"/>
                        <xs:attribute name="font" type="TYPE_FONT" use="optional" default="helvetica"/>
                        <xs:attribute name="font-size" type="xs:positiveInteger" use="optional" default="9"/>
                        <xs:attribute name="line-height" type="xs:positiveInteger" use="optional" default="12"/>
                        <xs:attribute name="method" type="TYPE_PROMPT_METHOD" use="optional" default="input"/>
                        <xs:attribute name="select-options" type="xs:string" use="optional"/>
                        <xs:attribute name="name" type="xs:token" use="required"/>
                        <xs:attribute name="type" type="TYPE_PROMPT_TYPE" use="optional" default="text"/>
                        <xs:attribute name="position" type="TYPE_XY" use="required"/>
                        <xs:attribute name="size" type="TYPE_XY" use="optional"/>
                        <xs:attribute name="prefix" type="xs:string" use="optional"/>
                        <xs:attribute name="suffix" type="xs:string" use="optional"/>
                </xs:complexType>
        </xs:element>
        <xs:element name="resolution">
                <xs:complexType>
                        <xs:attribute name="description" type="xs:token" use="required"/>
                        <xs:attribute name="value" type="xs:integer" use="required"/>
                </xs:complexType>
        </xs:element>
        <xs:element name="scale">
                <xs:complexType>
                        <xs:attribute name="description" type="xs:token" use="required"/>
                        <xs:attribute name="value" type="xs:integer" use="required"/>
                        <xs:attribute name="default" type="TYPE_BOOLEAN" use="optional" default="false"/>
                </xs:complexType>
        </xs:element>
        <xs:element name="scalebar">
                <xs:complexType>
                        <xs:attribute name="divisions" type="xs:positiveInteger" use="optional" default="4"/>
                        <xs:attribute name="font" type="TYPE_FONT" use="optional" default="helvetica"/>
                        <xs:attribute name="font-size" type="xs:positiveInteger" use="optional" default="9"/>
                        <xs:attribute name="length" type="TYPE_POSITIVE_DECIMAL" use="required"/>
                        <xs:attribute name="locale-language" type="xs:string" use="optional" default="en"/>
                        <xs:attribute name="locale-country" type="xs:string" use="optional" default="US"/>
                        <xs:attribute name="locale-variant" type="xs:string" use="optional"/>
                        <xs:attribute name="position" type="TYPE_XY" use="required"/>
                        <xs:attribute name="text-position" type="TYPE_SCALEBAR_TEXT_POSITION" use="optional" default="top"/>
                        <xs:attribute name="units" type="TYPE_SCALEBAR_UNITS" use="optional" default="metric"/>
                </xs:complexType>
        </xs:element>
        <xs:element name="scaletext">
                <xs:complexType>
                        <xs:attribute name="position" type="TYPE_XY" use="required"/>
                        <xs:attribute name="alignment" type="TYPE_ALIGNMENT" use="required"/>
                        <xs:attribute name="font" type="TYPE_FONT" use="optional" default="helvetica"/>
                        <xs:attribute name="font-size" type="xs:positiveInteger" use="optional" default="9"/>
                        <xs:attribute name="prefix" type="xs:string" use="optional"/>
                        <xs:attribute name="suffix" type="xs:string" use="optional"/>
                </xs:complexType>
        </xs:element>
        <xs:element name="template">
                <xs:complexType>
                        <xs:choice maxOccurs="unbounded">
                                <xs:element ref="box"/>
                                <xs:element ref="centercoordinatetext"/>
                                <xs:element ref="datetext"/>
                                <xs:element ref="image"/>
                                <xs:element ref="indexmap"/>
                                <xs:element ref="latlongraticule"/>
                                <xs:element ref="legend"/>
                                <xs:element ref="line"/>
                                <xs:element ref="map"/>
                                <xs:element ref="northarrow"/>
                                <xs:element ref="paragraph"/>
                                <xs:element ref="prompt"/>
                                <xs:element ref="scalebar"/>
                                <xs:element ref="scaletext"/>
                                <xs:element ref="text"/>
                                <xs:element ref="titletext"/>
                        </xs:choice>
                        <xs:attribute name="name" type="xs:token" use="required"/>
                        <xs:attribute name="units" type="TYPE_UNITS" use="optional" default="points"/>
                        <xs:attribute name="page-size" type="TYPE_XY" use="required"/>
                        <xs:attribute name="border-width" type="xs:decimal" use="optional" default="36"/>
                </xs:complexType>
        </xs:element>
        <xs:element name="text">
                <xs:complexType>
                        <xs:attribute name="position" type="TYPE_XY" use="required"/>
                        <xs:attribute name="alignment" type="TYPE_ALIGNMENT" use="required"/>
                        <xs:attribute name="font" type="TYPE_FONT" use="optional" default="helvetica"/>
                        <xs:attribute name="font-size" type="xs:positiveInteger" use="optional" default="9"/>
                        <xs:attribute name="text" type="xs:string" use="required"/>
                </xs:complexType>
        </xs:element>
        <xs:element name="titletext">
                <xs:complexType>
                        <xs:attribute name="position" type="TYPE_XY" use="required"/>
                        <xs:attribute name="alignment" type="TYPE_ALIGNMENT" use="required"/>
                        <xs:attribute name="font" type="TYPE_FONT" use="optional" default="helvetica_bold"/>
                        <xs:attribute name="font-size" type="xs:positiveInteger" use="optional" default="18"/>
                        <xs:attribute name="default" type="xs:token" use="optional"/>
                </xs:complexType>
        </xs:element>
        <xs:simpleType name="TYPE_ALIGNMENT">
                <xs:restriction base="xs:token">
                        <xs:enumeration value="left"/>
                        <xs:enumeration value="right"/>
                        <xs:enumeration value="center"/>
                </xs:restriction>
        </xs:simpleType>
        <xs:simpleType name="TYPE_BOOLEAN">
                <xs:restriction base="xs:token">
                        <xs:enumeration value="true"/>
                        <xs:enumeration value="false"/>
                </xs:restriction>
        </xs:simpleType>
        <xs:simpleType name="TYPE_COLOR">
                <xs:restriction base="xs:token">
                        <xs:pattern value="\d{1,3},\d{1,3},\d{1,3}"/>
                </xs:restriction>
        </xs:simpleType>
        <xs:simpleType name="TYPE_DATE">
                <xs:restriction base="xs:token">
                        <xs:enumeration value="date_long"/>
                        <xs:enumeration value="date_medium"/>
                        <xs:enumeration value="date_short"/>
                        <xs:enumeration value="datetime_long"/>
                        <xs:enumeration value="datetime_medium"/>
                        <xs:enumeration value="datetime_short"/>
                        <xs:enumeration value="time_long"/>
                        <xs:enumeration value="time_medium"/>
                        <xs:enumeration value="time_short"/>
                </xs:restriction>
        </xs:simpleType>
        <xs:simpleType name="TYPE_FONT">
                <xs:restriction base="xs:token">
                        <xs:enumeration value="helvetica"/>
                        <xs:enumeration value="helvetica_bold"/>
                        <xs:enumeration value="helvetica_boldoblique"/>
                        <xs:enumeration value="helvetica_oblique"/>
                        <xs:enumeration value="times_roman"/>
                        <xs:enumeration value="times_bold"/>
                        <xs:enumeration value="times_bolditalic"/>
                        <xs:enumeration value="times_italic"/>
                        <xs:enumeration value="courier"/>
                        <xs:enumeration value="courier_bold"/>
                        <xs:enumeration value="courier_boldoblique"/>
                        <xs:enumeration value="courier_oblique"/>
                </xs:restriction>
        </xs:simpleType>
        <xs:simpleType name="TYPE_INDEXMAP">
                <xs:restriction base="xs:token">
                        <xs:enumeration value="box"/>
                        <xs:enumeration value="crosshair"/>
                </xs:restriction>
        </xs:simpleType>
        <xs:simpleType name="TYPE_POSITIVE_DECIMAL">
                <xs:restriction base="xs:decimal">
                        <xs:minExclusive value="0"/>
                </xs:restriction>
        </xs:simpleType>
        <xs:simpleType name="TYPE_PROMPT_METHOD">
                <xs:restriction base="xs:token">
                        <xs:enumeration value="input"/>
                        <xs:enumeration value="select"/>
                </xs:restriction>
        </xs:simpleType>
        <xs:simpleType name="TYPE_PROMPT_TYPE">
                <xs:restriction base="xs:token">
                        <xs:enumeration value="text"/>
                        <xs:enumeration value="paragraph"/>
                </xs:restriction>
        </xs:simpleType>
        <xs:simpleType name="TYPE_SCALEBAR_TEXT_POSITION">
                <xs:restriction base="xs:token">
                        <xs:enumeration value="top"/>
                        <xs:enumeration value="bottom"/>
                </xs:restriction>
        </xs:simpleType>
        <xs:simpleType name="TYPE_SCALEBAR_UNITS">
                <xs:restriction base="xs:token">
                        <xs:enumeration value="imperial"/>
                        <xs:enumeration value="metric"/>
                </xs:restriction>
        </xs:simpleType>
        <xs:simpleType name="TYPE_UNITS">
                <xs:restriction base="xs:token">
                        <xs:enumeration value="points"/>
                        <xs:enumeration value="inches"/>
                        <xs:enumeration value="centimeters"/>
                        <xs:enumeration value="millimeters"/>
                </xs:restriction>
        </xs:simpleType>
        <xs:simpleType name="TYPE_XY">
                <xs:restriction base="xs:token">
                        <xs:pattern value="\d*(\.{0,1}\d{1,4})?,\d*(\.{0,1}\d{1,4})?"/>
                </xs:restriction>
        </xs:simpleType>
</xs:schema>