198 lines
8.3 KiB
XML
198 lines
8.3 KiB
XML
<?xml version="1.0" encoding="utf-8" ?>
|
|
<!--
|
|
NOAA National Hurricane Center Cyclone RSS extension schema
|
|
Copyright (c) 2023 ~lucidiot
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, version 3.
|
|
|
|
This program is distributed in the hope that it will be useful, but
|
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
This file was derived from the NHC GIS RSS feed documentation
|
|
at <https://www.nhc.noaa.gov/gis/rss.php>
|
|
and the RSS examples at <https://www.nhc.noaa.gov/rss_examples/>
|
|
-->
|
|
<xs:schema targetNamespace="https://www.nhc.noaa.gov"
|
|
version="1.0"
|
|
elementFormDefault="qualified"
|
|
xmlns="https://www.nhc.noaa.gov"
|
|
xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
|
<xs:simpleType name="CoordinatesType">
|
|
<xs:annotation>
|
|
<xs:documentation>A pair of WGS84 coordinates, as a latitude between -90.0 and +90.0 and a longitude between -180.0 and +180.0.</xs:documentation>
|
|
</xs:annotation>
|
|
<xs:restriction base="xs:string">
|
|
<xs:pattern value="[+-]?(90(\.0+)?|[0-8]?\d(\.\d+)),\s*[+-]?(180(\.0+)?|(1[0-7]|0?\d)?\d(\.\d+)?)" />
|
|
</xs:restriction>
|
|
</xs:simpleType>
|
|
|
|
<xs:simpleType name="CycloneTypeType">
|
|
<xs:annotation>
|
|
<xs:documentation>Type of the weather system. Not all values are known.</xs:documentation>
|
|
</xs:annotation>
|
|
<!-- Use a union to allow any string, but still suggest some known values -->
|
|
<xs:union>
|
|
<xs:simpleType>
|
|
<xs:restriction base="xs:string" />
|
|
</xs:simpleType>
|
|
<xs:simpleType>
|
|
<xs:restriction base="xs:string">
|
|
<xs:enumeration value="TROPICAL STORM"></xs:enumeration>
|
|
<xs:enumeration value="TROPICAL DEPRESSION"></xs:enumeration>
|
|
<xs:enumeration value="HURRICANE"></xs:enumeration>
|
|
<xs:enumeration value="POST-TROPICAL CYCLONE"></xs:enumeration>
|
|
<xs:enumeration value="REMNANTS OF"></xs:enumeration>
|
|
</xs:restriction>
|
|
</xs:simpleType>
|
|
</xs:union>
|
|
</xs:simpleType>
|
|
|
|
<xs:simpleType name="WalletType">
|
|
<xs:annotation>
|
|
<xs:documentation>Name of a storm wallet.</xs:documentation>
|
|
<xs:documentation>A wallet is a binder where NHC forecasters archive all of a weather system's data once it dissipates, before hurricane forecasting became computerized.</xs:documentation>
|
|
<xs:documentation>Wallets have a prefix for each region the NHC and CPHC are responsible for (AT for Atlantic, EP for Eastern Pacific, CP for Central Pacific) and a number matching the corresponding public storm advisory level.</xs:documentation>
|
|
</xs:annotation>
|
|
<xs:restriction base="xs:string">
|
|
<xs:pattern value="(AT|[EC]P)[1-5]" />
|
|
</xs:restriction>
|
|
</xs:simpleType>
|
|
|
|
<xs:simpleType name="ATCFIDType">
|
|
<xs:annotation>
|
|
<xs:documentation>An Automated Tropical Cyclone Forecast ID.</xs:documentation>
|
|
<xs:documentation>IDs begin with a prefix for each region the NHC and CPHC are responsible for (AL for Atlantic, EP for Eastern Pacific, CP for Central Pacific), followed by a two-digit storm number and the year of that storm in four digits.</xs:documentation>
|
|
<xs:documentation>Note that "AL" is used as the Atlantic region, not "AT" like for storm wallets.</xs:documentation>
|
|
<xs:documentation>See https://ftp.nhc.noaa.gov/atcf/README for more information about ATCF data.</xs:documentation>
|
|
</xs:annotation>
|
|
<xs:restriction base="xs:string">
|
|
<xs:pattern value="(AL|[EC]P)\d{6}" />
|
|
</xs:restriction>
|
|
</xs:simpleType>
|
|
|
|
<xs:simpleType name="DateTimeType">
|
|
<xs:restriction base="xs:string">
|
|
<xs:pattern value="(1[0-2]|0?\d):[0-5]\d [AP]M ([CEP]D|AS|GM)T (Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Feb [0-2]?[0-9]|(Jan|Mar|May|Jul|Aug|Oct|Dec) ([0-2]?[0-9]|3[01])|(Apr|Jun|Sep|Nov) ([0-2]?[0-9]|30))" />
|
|
</xs:restriction>
|
|
</xs:simpleType>
|
|
|
|
<xs:simpleType name="MovementType">
|
|
<xs:annotation>
|
|
<xs:documentation>Human-readable indication of a weather system's movement.</xs:documentation>
|
|
<xs:documentation>Usually in the form of a cardinal direction, up to half-winds, followed by "at" and a wind speed in miles per hour, or just "Stationary".</xs:documentation>
|
|
</xs:annotation>
|
|
<!-- Use a union to allow any string, but still suggest some known values -->
|
|
<xs:union>
|
|
<xs:simpleType>
|
|
<xs:restriction base="xs:string" />
|
|
</xs:simpleType>
|
|
<xs:simpleType>
|
|
<xs:restriction base="xs:string">
|
|
<xs:enumeration value="Stationary"></xs:enumeration>
|
|
<xs:enumeration value="Nearly stationary"></xs:enumeration>
|
|
</xs:restriction>
|
|
</xs:simpleType>
|
|
<xs:simpleType>
|
|
<xs:restriction base="xs:string">
|
|
<xs:pattern value="(NN?[EW]|SS?[EW]|E([NS]E)?|W([NS]W)?) at \d+ mph" />
|
|
</xs:restriction>
|
|
</xs:simpleType>
|
|
</xs:union>
|
|
</xs:simpleType>
|
|
|
|
<xs:simpleType name="PressureType">
|
|
<xs:annotation>
|
|
<xs:documentation>Atmospheric pressure in a weather system in millibars.</xs:documentation>
|
|
</xs:annotation>
|
|
<xs:restriction base="xs:string">
|
|
<xs:pattern value="\d+ mb" />
|
|
</xs:restriction>
|
|
</xs:simpleType>
|
|
|
|
<xs:simpleType name="WindType">
|
|
<xs:annotation>
|
|
<xs:documentation>Wind speed in a weather system in miles per hour.</xs:documentation>
|
|
</xs:annotation>
|
|
<xs:restriction base="xs:string">
|
|
<xs:pattern value="\d+ mph" />
|
|
</xs:restriction>
|
|
</xs:simpleType>
|
|
|
|
<xs:complexType name="CycloneType">
|
|
<xs:annotation>
|
|
<xs:documentation>Any tropical weather system.</xs:documentation>
|
|
<xs:documentation><![CDATA[This is meant to be added to an RSS <item> to document that it refers to this system.]]></xs:documentation>
|
|
</xs:annotation>
|
|
<xs:all>
|
|
<xs:element name="center" type="CoordinatesType">
|
|
<xs:annotation>
|
|
<xs:documentation>Location of the center of the weather system, as a WGS84 latitude and longitude.</xs:documentation>
|
|
</xs:annotation>
|
|
</xs:element>
|
|
|
|
<xs:element name="type" type="CycloneTypeType">
|
|
<xs:annotation>
|
|
<xs:documentation>Type of the weather system. Not all possible values are known.</xs:documentation>
|
|
</xs:annotation>
|
|
</xs:element>
|
|
|
|
<xs:element name="name" type="xs:string">
|
|
<xs:annotation>
|
|
<xs:documentation>Name of the weather system.</xs:documentation>
|
|
</xs:annotation>
|
|
</xs:element>
|
|
|
|
<xs:element name="wallet" type="WalletType">
|
|
<xs:annotation>
|
|
<xs:documentation>The storm wallet for this weather system.</xs:documentation>
|
|
</xs:annotation>
|
|
</xs:element>
|
|
|
|
<xs:element name="atcf" type="ATCFIDType">
|
|
<xs:annotation>
|
|
<xs:documentation>The Automated Tropical Cyclone Forecast ID for this weather system.</xs:documentation>
|
|
</xs:annotation>
|
|
</xs:element>
|
|
|
|
<xs:element name="datetime" type="DateTimeType">
|
|
<xs:annotation>
|
|
<xs:documentation>Date and time of the status and reported measurements for this weather system.</xs:documentation>
|
|
</xs:annotation>
|
|
</xs:element>
|
|
|
|
<xs:element name="movement" type="MovementType">
|
|
<xs:annotation>
|
|
<xs:documentation>Human-readable indication of the weather system's movement.</xs:documentation>
|
|
</xs:annotation>
|
|
</xs:element>
|
|
|
|
<xs:element name="pressure" type="PressureType">
|
|
<xs:annotation>
|
|
<xs:documentation>Atmospheric pressure in the weather system.</xs:documentation>
|
|
</xs:annotation>
|
|
</xs:element>
|
|
|
|
<xs:element name="wind" type="WindType">
|
|
<xs:annotation>
|
|
<xs:documentation>Wind speed in the weather system.</xs:documentation>
|
|
</xs:annotation>
|
|
</xs:element>
|
|
|
|
<xs:element name="headline" type="xs:string">
|
|
<xs:annotation>
|
|
<xs:documentation>Headline used for the advisory on this weather system.</xs:documentation>
|
|
</xs:annotation>
|
|
</xs:element>
|
|
</xs:all>
|
|
</xs:complexType>
|
|
|
|
<xs:element name="Cyclone" type="CycloneType" />
|
|
</xs:schema>
|