rsrsss/xsd/nhc.xsd

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>