385 lines
20 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:tns="http://opensciencemap.org/rendertheme"
xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
targetNamespace="http://opensciencemap.org/rendertheme" xml:lang="en">
<!-- attribute types -->
<xs:simpleType name="cap">
<xs:restriction base="xs:string">
<xs:enumeration value="butt"/>
<xs:enumeration value="round"/>
<xs:enumeration value="square"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="closed">
<xs:restriction base="xs:string">
<xs:enumeration value="yes"/>
<xs:enumeration value="no"/>
<xs:enumeration value="any"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="color">
<xs:restriction base="xs:string">
<xs:pattern value="#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="elementList">
<xs:restriction base="xs:string">
<xs:enumeration value="node"/>
<xs:enumeration value="way"/>
<xs:enumeration value="any"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="selectorList">
<xs:restriction base="xs:string">
<xs:enumeration value="first"/>
<xs:enumeration value="any"/>
<xs:enumeration value="when-matched"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="fontFamily">
<xs:restriction base="xs:string">
<xs:enumeration value="default"/>
<xs:enumeration value="default_bold"/>
<xs:enumeration value="monospace"/>
<xs:enumeration value="sans_serif"/>
<xs:enumeration value="serif"/>
<xs:enumeration value="thin"/>
<xs:enumeration value="light"/>
<xs:enumeration value="medium"/>
<xs:enumeration value="black"/>
<xs:enumeration value="condensed"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="fontStyle">
<xs:restriction base="xs:string">
<xs:enumeration value="bold"/>
<xs:enumeration value="bold_italic"/>
<xs:enumeration value="italic"/>
<xs:enumeration value="normal"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="nonNegativeFloat">
<xs:restriction base="xs:float">
<xs:minInclusive value="0"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="src">
<xs:restriction base="xs:string">
<xs:pattern value="((file|assets):)?.+"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="strokeDasharray">
<xs:restriction base="xs:string">
<xs:pattern
value="([0-9]+(\.[0-9]+)? *, *[0-9]+(\.[0-9]+)? *, *)*[0-9]+(\.[0-9]+)? *, *[0-9]+(\.[0-9]+)?"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="textKey">
<xs:restriction base="xs:string">
<xs:enumeration value="ele"/>
<xs:enumeration value="addr:housenumber"/>
<xs:enumeration value="addr_housenumber"/> <!-- Mapzen -->
<xs:enumeration value="housenumber"/> <!-- OpenMapTiles -->
<xs:enumeration value="name"/>
<xs:enumeration value="maxSpeed"/><!--最高速度-->
<xs:enumeration value="minSpeed"/><!--最低速度-->
<xs:enumeration value="angle"/><!--角度-->
<xs:enumeration value="ref"/>
</xs:restriction>
</xs:simpleType>
<!-- style menu cat element -->
<xs:complexType name="cat">
<xs:attribute name="id" type="xs:string" use="required"/>
</xs:complexType>
<!-- style menu name element -->
<xs:complexType name="name">
<xs:attribute name="lang" type="xs:string" use="required"/>
<xs:attribute name="value" type="xs:string" use="required"/>
</xs:complexType>
<!-- style menu overlay element -->
<xs:complexType name="overlay">
<xs:attribute name="id" type="xs:string" use="required"/>
</xs:complexType>
<!-- style menu layer element -->
<xs:complexType name="layer">
<xs:sequence maxOccurs="1" minOccurs="0">
<xs:element name="name" maxOccurs="unbounded" minOccurs="0" type="tns:name"/>
<xs:element name="cat" maxOccurs="unbounded" minOccurs="0" type="tns:cat"/>
<xs:element name="overlay" maxOccurs="unbounded" minOccurs="0" type="tns:overlay"/>
</xs:sequence>
<xs:attribute name="id" type="xs:string" use="required"/>
<xs:attribute name="parent" type="xs:string" use="optional"/>
<xs:attribute name="visible" default="false" type="xs:boolean" use="optional"/>
<xs:attribute name="enabled" default="false" type="xs:boolean" use="optional"/>
</xs:complexType>
<!-- rendering instructions -->
<xs:complexType name="area">
<xs:attribute name="cat" type="xs:string" use="optional"/>
<xs:attribute name="id" default="0" type="xs:string" use="optional"/>
<xs:attribute name="use" default="0" type="xs:string" use="optional"/>
<xs:attribute name="src" type="tns:src" use="optional"/>
<xs:attribute name="symbol-width" type="xs:positiveInteger" use="optional"/>
<xs:attribute name="symbol-height" type="xs:positiveInteger" use="optional"/>
<xs:attribute name="symbol-percent" type="xs:positiveInteger" use="optional"/>
<xs:attribute name="fill" default="#000000" type="tns:color" use="optional"/>
<xs:attribute name="stroke" default="#00000000" type="tns:color" use="optional"/>
<xs:attribute name="stroke-width" default="0" type="tns:nonNegativeFloat" use="optional"/>
<xs:attribute name="fade" default="-1" type="xs:integer" use="optional"/>
<xs:attribute name="blend" default="-1" type="xs:integer" use="optional"/>
<xs:attribute name="blend-fill" default="#000000" type="tns:color" use="optional"/>
<xs:attribute name="mesh" default="false" type="xs:boolean" use="optional"/>
<xs:attribute name="repeat" default="true" type="xs:boolean" use="optional"/>
<!-- 长边坐标轴默认为s -->
<xs:attribute name="longEdge" type="tns:text" default="s"/>
<!-- 是否包含方向默认为false -->
<xs:attribute name="hasDirect" default="false" type="xs:boolean" use="optional" />
</xs:complexType>
<xs:complexType name="caption">
<xs:attribute name="cat" type="xs:string" use="optional"/>
<xs:attribute name="k" type="tns:textKey" use="required"/>
<xs:attribute name="dy" default="0" type="xs:float" use="optional"/>
<xs:attribute name="font-family" default="default" type="tns:fontFamily" use="optional"/>
<xs:attribute name="style" default="normal" type="tns:fontStyle" use="optional"/>
<xs:attribute name="size" default="0" type="tns:nonNegativeFloat" use="optional"/>
<xs:attribute name="bg-fill" default="#00000000" type="tns:color" use="optional"/>
<xs:attribute name="fill" default="#000000" type="tns:color" use="optional"/>
<xs:attribute name="stroke" default="#000000" type="tns:color" use="optional"/>
<xs:attribute name="stroke-width" default="0" type="tns:nonNegativeFloat" use="optional"/>
<!-- polygon area expressed as a ratio to tile area, e.g. 0.1 for 10% of tile area -->
<xs:attribute name="area-size" default="0" type="tns:nonNegativeFloat" use="optional"/>
<!-- priority for label placement, 0 = highest priority -->
<xs:attribute name="priority" default="0" type="xs:integer" use="optional"/>
<!-- symbol src name -->
<xs:attribute name="symbol" type="tns:src" use="optional"/>
<xs:attribute name="symbol-width" type="xs:positiveInteger" use="optional"/>
<xs:attribute name="symbol-height" type="xs:positiveInteger" use="optional"/>
<xs:attribute name="symbol-percent" type="xs:positiveInteger" use="optional"/>
</xs:complexType>
<xs:complexType name="circle">
<xs:attribute name="cat" type="xs:string" use="optional"/>
<xs:attribute name="radius" type="tns:nonNegativeFloat" use="required"/>
<xs:attribute name="scale-radius" default="false" type="xs:boolean" use="optional"/>
<xs:attribute name="fill" default="#00000000" type="tns:color" use="optional"/>
<xs:attribute name="stroke" default="#00000000" type="tns:color" use="optional"/>
<xs:attribute name="stroke-width" default="0" type="tns:nonNegativeFloat" use="optional"/>
</xs:complexType>
<xs:complexType name="line">
<xs:attribute name="cat" type="xs:string" use="optional"/>
<!-- style: TODO only in style-line-->
<xs:attribute name="id" default="0" type="xs:string" use="optional"/>
<!-- inherited style -->
<xs:attribute name="use" default="0" type="xs:string" use="optional"/>
<xs:attribute name="src" type="tns:src" use="optional"/>
<xs:attribute name="symbol-width" type="xs:positiveInteger" use="optional"/>
<xs:attribute name="symbol-height" type="xs:positiveInteger" use="optional"/>
<xs:attribute name="symbol-percent" type="xs:positiveInteger" use="optional"/>
<xs:attribute name="stroke" default="#000000" type="tns:color" use="optional"/>
<xs:attribute name="width" default="0" type="xs:float" use="optional"/>
<!-- minimum scaled width to draw outline -->
<xs:attribute name="min" default="0" type="xs:float" use="optional"/>
<xs:attribute name="dasharray" type="tns:strokeDasharray" use="optional"/>
<xs:attribute name="cap" default="round" type="tns:cap" use="optional"/>
<xs:attribute name="outline" default="" type="xs:string" use="optional"/>
<xs:attribute name="fade" default="-1" type="xs:integer" use="optional"/>
<xs:attribute name="blur" default="-1" type="xs:float" use="optional"/>
<xs:attribute name="fix" default="false" type="xs:boolean" use="optional"/>
<xs:attribute name="repeat-gap" default="200" type="xs:float" use="optional"/>
<xs:attribute name="repeat-start" default="30" type="xs:float" use="optional"/>
<!-- stipple repeat in 'pixel' -->
<xs:attribute name="stipple" default="0" type="xs:integer" use="optional"/>
<!-- stipple color -->
<xs:attribute name="stipple-stroke" default="#000000" type="tns:color" use="optional"/>
<!-- stipple width relative to line width, i.e 0.0-1.0 -->
<xs:attribute name="stipple-width" default="0" type="xs:float" use="optional"/>
</xs:complexType>
<xs:complexType name="text">
<xs:attribute name="cat" type="xs:string" use="optional"/>
<xs:attribute name="id" default="0" type="xs:string" use="optional"/>
<xs:attribute name="use" default="0" type="xs:string" use="optional"/>
<xs:attribute name="k" default="name" type="tns:textKey" use="optional"/>
<xs:attribute name="dy" default="0" type="xs:float" use="optional"/>
<xs:attribute name="font-family" default="default" type="tns:fontFamily" use="optional"/>
<xs:attribute name="style" default="normal" type="tns:fontStyle" use="optional"/>
<xs:attribute name="size" default="0" type="tns:nonNegativeFloat" use="optional"/>
<xs:attribute name="bg-fill" default="#00000000" type="tns:color" use="optional"/>
<xs:attribute name="fill" default="#000000" type="tns:color" use="optional"/>
<xs:attribute name="stroke" default="#000000" type="tns:color" use="optional"/>
<xs:attribute name="stroke-width" default="0" type="tns:nonNegativeFloat" use="optional"/>
<xs:attribute name="caption" default="false" type="xs:boolean" use="optional"/>
<!-- polygon area expressed as a ratio to tile area, e.g. 0.1 for 10% of tile area -->
<xs:attribute name="area-size" default="0" type="tns:nonNegativeFloat" use="optional"/>
<!-- priority for label placement, 0 = highest priority -->
<xs:attribute name="priority" default="0" type="xs:integer" use="optional"/>
</xs:complexType>
<xs:complexType name="symbol">
<xs:attribute name="cat" type="xs:string" use="optional"/>
<xs:attribute name="id" default="0" type="xs:string" use="optional"/>
<xs:attribute name="use" default="0" type="xs:string" use="optional"/>
<!-- 使用动态图标时,以@符号开头建议动态tag的key使用较长(大于4位)的字符串 -->
<xs:attribute name="src" type="tns:src" use="optional"/>
<xs:attribute name="symbol-width" type="xs:positiveInteger" use="optional"/>
<xs:attribute name="symbol-height" type="xs:positiveInteger" use="optional"/>
<xs:attribute name="symbol-percent" type="xs:positiveInteger" use="optional"/>
<!-- symbols on lines -->
<xs:attribute name="billboard" default="false" type="xs:boolean" use="optional"/>
<xs:attribute name="repeat" default="false" type="xs:boolean" use="optional"/>
<xs:attribute name="repeat-gap" default="200" type="xs:float" use="optional"/>
<xs:attribute name="repeat-start" default="30" type="xs:float" use="optional"/>
<xs:attribute name="rotate" default="true" type="xs:boolean" use="optional"/>
<!-- 设置是否支持图标压盖如果为true则同点位图标不避让允许压盖否则支持自动避让 -->
<xs:attribute name="gland" default="false" type="xs:boolean" use="optional"/>
<!-- 原图标旋转角度默认情况下应该使用以X轴为正方向的图标此处可设置原图标的旋转角度在渲染时自动对图标进行旋转仅支持线要素 -->
<xs:attribute name="degree" default="0" type="xs:float" use="optional"/>
<!-- 图标在y轴方向上的偏移量 -->
<xs:attribute name="dy" default="0" type="xs:float" use="optional"/>
<!-- symbol的背景图片常用来绘制立标 -->
<xs:attribute name="background" type="tns:src" use="optional"/>
<!-- symbol的内容图片的占用区域必须为4个数字组成英文逗号分隔的字符串值为左下的百分比 -->
<xs:attribute name="content-rect" type="xs:string" use="optional"/>
</xs:complexType>
<xs:complexType name="extrusion">
<xs:attribute name="cat" type="xs:string" use="optional"/>
<xs:attribute name="line-color" type="tns:color" use="optional"/>
<xs:attribute name="side-color" type="tns:color" use="required"/>
<xs:attribute name="top-color" type="tns:color" use="required"/>
<xs:attribute name="hsv-h" default="0" type="xs:double" use="optional"/>
<xs:attribute name="hsv-s" default="1" type="xs:double" use="optional"/>
<xs:attribute name="hsv-v" default="1" type="xs:double" use="optional"/>
<!-- 12m default -->
<xs:attribute name="default-height" default="12" type="xs:positiveInteger" use="optional"/>
</xs:complexType>
<!-- match elements -->
<xs:complexType name="m">
<xs:choice maxOccurs="unbounded" minOccurs="0">
<!-- recursion to allow for nested m -->
<xs:element name="m" type="tns:m"/>
<xs:element name="area" type="tns:area"/>
<xs:element name="caption" type="tns:caption"/>
<xs:element name="circle" type="tns:circle"/>
<xs:element name="line" type="tns:line"/>
<xs:element name="outline" type="tns:line"/>
<xs:element name="lineSymbol" type="tns:line"/>
<xs:element name="text" type="tns:text"/>
<xs:element name="extrusion" type="tns:extrusion"/>
<xs:element name="symbol" type="tns:symbol"/>
<!-- outline is defined within rules to match layering -->
<xs:element name="outline-layer" type="tns:line"/>
</xs:choice>
<xs:attribute name="select" default="any" type="tns:selectorList" use="optional"/>
<xs:attribute name="e" type="tns:elementList" use="optional"/>
<xs:attribute name="k" type="xs:string" use="optional"/>
<xs:attribute name="v" type="xs:string" use="optional"/>
<xs:attribute name="cat" type="xs:string" use="optional"/>
<xs:attribute name="closed" default="any" type="tns:closed" use="optional"/>
<xs:attribute name="zoom-min" default="0" type="xs:unsignedByte" use="optional"/>
<xs:attribute name="zoom-max" default="127" type="xs:unsignedByte" use="optional"/>
</xs:complexType>
<xs:complexType name="atlasRect">
<xs:attribute name="id" type="xs:string" use="required"/>
<xs:attribute name="pos" type="xs:string" use="required"/>
</xs:complexType>
<xs:complexType name="atlas">
<xs:choice maxOccurs="unbounded" minOccurs="0">
<xs:element name="rect" type="tns:atlasRect"/>
</xs:choice>
<xs:attribute name="img" type="xs:string" use="required"/>
</xs:complexType>
<!-- stylemenu element -->
<xs:complexType name="stylemenu">
<xs:sequence maxOccurs="1" minOccurs="0">
<xs:element name="layer" maxOccurs="unbounded" minOccurs="0" type="tns:layer"/>
</xs:sequence>
<xs:attribute name="defaultvalue" type="xs:string" use="required"/>
<xs:attribute name="defaultlang" type="xs:string" use="required"/>
<xs:attribute name="id" type="xs:string" use="required"/>
</xs:complexType>
<!-- tag-transform element -->
<xs:complexType name="tag-transform">
<xs:attribute name="k" type="xs:string" use="required"/>
<xs:attribute name="v" type="xs:string" use="optional"/>
<xs:attribute name="k-lib" type="xs:string" use="required"/>
<xs:attribute name="v-lib" type="xs:string" use="optional"/>
</xs:complexType>
<!-- rendertheme element -->
<xs:complexType name="rendertheme">
<xs:sequence maxOccurs="1" minOccurs="0">
<xs:element name="stylemenu" maxOccurs="1" minOccurs="0" type="tns:stylemenu"/>
<!-- tag definitions -->
<xs:choice maxOccurs="unbounded" minOccurs="0">
<xs:element name="tag-transform" type="tns:tag-transform"/>
</xs:choice>
<!-- style definitions -->
<xs:sequence maxOccurs="256" minOccurs="0">
<xs:choice maxOccurs="unbounded" minOccurs="0">
<xs:element name="style-text" type="tns:text"/>
<xs:element name="style-symbol" type="tns:symbol"/>
<xs:element name="style-area" type="tns:area"/>
<xs:element name="style-line" type="tns:line"/>
<!-- <xs:element name="style-outline" type="tns:line" /> -->
</xs:choice>
</xs:sequence>
<xs:choice maxOccurs="1" minOccurs="0">
<xs:element name="atlas" type="tns:atlas"/>
</xs:choice>
<!-- matching rules -->
<xs:sequence maxOccurs="unbounded" minOccurs="0">
<xs:element name="m" type="tns:m"/>
</xs:sequence>
</xs:sequence>
<xs:attribute name="version" type="xs:positiveInteger" use="required"/>
<xs:attribute name="map-background" default="#ffffff" type="tns:color" use="optional"/>
<xs:attribute name="base-stroke-width" default="1" type="tns:nonNegativeFloat"
use="optional"/>
<xs:attribute name="base-text-scale" default="1" type="tns:nonNegativeFloat"
use="optional"/>
</xs:complexType>
<!-- root element -->
<xs:element name="rendertheme" type="tns:rendertheme"/>
</xs:schema>