<?xml version="1.0" encoding="utf-8"?>
<!-- gpx_style.xsd version 0.1: Public GPX extensions for text, line, and fill styles -->
<xsd:schema
	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
	xmlns:gpx="http://www.topografix.com/GPX/1/1"
	xmlns="http://www.topografix.com/GPX/gpx_style/0/1"
	targetNamespace="http://www.topografix.com/GPX/gpx_style/0/1"
	elementFormDefault="qualified">
<xsd:import namespace="http://www.topografix.com/GPX/1/1" schemaLocation="http://www.topografix.com/GPX/1/1/gpx.xsd"/>

<!-- line definition -->
    <xsd:complexType name="lineType">
	  <xsd:sequence>	<!-- elements must appear in this order -->
	    <xsd:element name="color"			type="colorType"		minOccurs="0"/>
	    <xsd:element name="width"			type="xsd:decimal"		minOccurs="0"/>
	    <xsd:element name="linecap"			type="linecapType"		minOccurs="0"/>
	    <xsd:element name="dasharray"		type="dasharrayType"	minOccurs="0"/>

	    <xsd:element name="extensions"		type="gpx:extensionsType"	minOccurs="0"/>
	  </xsd:sequence>
    </xsd:complexType>

<!-- fill definition -->
    <xsd:complexType name="fillType">
	  <xsd:sequence>	<!-- elements must appear in this order -->
	    <xsd:element name="color"			type="colorType"		minOccurs="0"/>
		<xsd:element name="pattern"			type="xsd:string"		minOccurs="0"/>

	    <xsd:element name="extensions"		type="gpx:extensionsType"	minOccurs="0"/>
	  </xsd:sequence>
    </xsd:complexType>

<!-- text definition -->
	<xsd:complexType name="textType">
	  <xsd:sequence>	<!-- elements must appear in this order -->
		<xsd:element name="text"			type="xsd:string"		minOccurs="0"/>
	    <xsd:element name="color"			type="colorType"		minOccurs="0"/>
		<xsd:element name="font"			type="fontType"			minOccurs="0"/>
		<xsd:element name="line"			type="lineType"			minOccurs="0"/>
		<xsd:element name="fill"			type="fillType"			minOccurs="0"/>
		<xsd:element name="align"			type="alignType"		minOccurs="0"/>
		<xsd:element name="vertical-align"	type="vertical-alignType"	minOccurs="0"/>
	    <xsd:element name="pt"				type="gpx:ptType"		minOccurs="0"/>

	    <xsd:element name="extensions"		type="gpx:extensionsType"	minOccurs="0"/>
	  </xsd:sequence>
	</xsd:complexType>

<!-- font definition -->
	<xsd:complexType name="fontType">
	  <xsd:sequence>	<!-- elements must appear in this order -->
		<xsd:element name="family"			type="xsd:string"		minOccurs="0"/>
		<xsd:element name="size"			type="xsd:decimal"		minOccurs="0"/>
		<xsd:element name="weight"			type="weightType"		minOccurs="0"/>
		<xsd:element name="style"			type="styleType"		minOccurs="0"/>

	    <xsd:element name="extensions"		type="gpx:extensionsType"	minOccurs="0"/>
	  </xsd:sequence>
	</xsd:complexType>

  <xsd:simpleType name="colorType">
    <xsd:restriction base="xsd:hexBinary">
      <xsd:length value="3"/>		<!-- 3 octets, RGB (ff0000) -->
    </xsd:restriction>
  </xsd:simpleType>

  <xsd:simpleType name="weightType">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="normal"/>
      <xsd:enumeration value="bold"/>
    </xsd:restriction>
  </xsd:simpleType>

  <xsd:simpleType name="linecapType">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="butt"/>
      <xsd:enumeration value="round"/>
      <xsd:enumeration value="square"/>
    </xsd:restriction>
  </xsd:simpleType>

  <xsd:simpleType name="dasharrayType">
    <xsd:restriction base="xsd:string">
      <xsd:pattern value="([0-9]+\s)*[0-9]+"/>	<!-- matches "20 10 30 10", e.g. -->
    </xsd:restriction>
  </xsd:simpleType>

  <xsd:simpleType name="styleType">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="normal"/>
      <xsd:enumeration value="italic"/>
    </xsd:restriction>
  </xsd:simpleType>

  <xsd:simpleType name="alignType">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="left"/>
      <xsd:enumeration value="center"/>
      <xsd:enumeration value="right"/>
    </xsd:restriction>
  </xsd:simpleType>

  <xsd:simpleType name="vertical-alignType">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="top"/>
      <xsd:enumeration value="center"/>
      <xsd:enumeration value="bottom"/>
    </xsd:restriction>
  </xsd:simpleType>

</xsd:schema> 