Add RelaxNG and RNC XML schema files from Leigh/WA5ZNU

This commit is contained in:
Dan Smith 2011-11-15 11:37:14 -08:00
parent 9f11e11bf6
commit 69305b7691
6 changed files with 357 additions and 0 deletions

28
share/contrib/chirp.rnc Normal file
View File

@ -0,0 +1,28 @@
#
# CHIRP XML Schema
# Copyright 2008 Dan Smith <dsmith@danplanet.com>
#
include "chirp_memory.rnc"
include "chirp_banks.rnc"
start = radio
radio = element radio {
attribute version { chirpSchemaVersionType }?,
comment?,
memories,
banks
}
comment = element comment { xsd:string }?
memories = element memories {
element memory { memoryType }*
}
banks = element banks {
element bank { bankType }*
}
chirpSchemaVersionType = xsd:string { pattern = "[0-9][0-9]*.[0-9][0-9]*.[0-9]{1,4}" }

58
share/contrib/chirp.rng Normal file
View File

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="UTF-8"?>
<grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
<!--
CHIRP XML Schema
Copyright 2008 Dan Smith <dsmith@danplanet.com>
-->
<include href="chirp_memory.rng"/>
<include href="chirp_banks.rng"/>
<start>
<ref name="radio"/>
</start>
<define name="radio">
<element name="radio">
<optional>
<attribute name="version">
<ref name="chirpSchemaVersionType"/>
</attribute>
</optional>
<optional>
<ref name="comment"/>
</optional>
<ref name="memories"/>
<ref name="banks"/>
</element>
</define>
<define name="comment">
<optional>
<element name="comment">
<data type="string"/>
</element>
</optional>
</define>
<define name="memories">
<element name="memories">
<zeroOrMore>
<element name="memory">
<ref name="memoryType"/>
</element>
</zeroOrMore>
</element>
</define>
<define name="banks">
<element name="banks">
<zeroOrMore>
<element name="bank">
<ref name="bankType"/>
</element>
</zeroOrMore>
</element>
</define>
<define name="chirpSchemaVersionType">
<data type="string">
<param name="pattern">[0-9][0-9]*.[0-9][0-9]*.[0-9]{1,4}</param>
</data>
</define>
</grammar>

View File

@ -0,0 +1,3 @@
bankType =
attribute id { xsd:nonNegativeInteger },
attribute label { xsd:string }

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
<define name="bankType">
<attribute name="id">
<data type="nonNegativeInteger"/>
</attribute>
<attribute name="label">
<data type="string"/>
</attribute>
</define>
</grammar>

View File

@ -0,0 +1,64 @@
memoryType =
attribute location { xsd:nonNegativeInteger }?,
shortName,
longName?,
frequency,
SquelchList,
squelchSetting?,
duplex,
offset,
mode,
tuningStep,
skip?,
bank?,
dv?
shortName = element shortName { xsd:string { pattern = "[A-Z0-9/ >\-]{0,6}" } }
frequencyType =
attribute units { "Hz" | "kHz" | "MHz" | "GHz" },
xsd:decimal
longName = element longName { xsd:string { pattern = "[.A-Za-z0-9/ >\-]{0,16}" } }
frequency = element frequency { frequencyType }
SquelchList =
element squelch { squelchType }?,
element squelch { squelchType }?,
element squelch { squelchType }?
squelchType =
element tone { xsd:decimal { minInclusive = "67.0" maxInclusive = "254.1" } }?, # could also use enumeration
element code { xsd:positiveInteger }?,
element polarity { xsd:string { pattern = "[RN]{2}" } }?,
attribute id { text }?,
attribute type { text }?
offset = element offset { frequencyType }
tuningStep = element tuningStep { frequencyType }
squelchSetting = element squelchSetting { xsd:string }
duplex = element duplex { "positive" | "negative" | "none" }
mode = element mode { "FM" | "NFM" | "WFM" | "AM" | "NAM" | "DV" }
dv = element dv {
element urcall { callsignType },
element rpt1call { callsignType },
element rpt2call { callsignType },
element digitalCode { digitalCodeType }?
}
callsignType = xsd:string { pattern = "[A-Z0-9/ ]*" }
digitalCodeType = xsd:integer { minInclusive = "0" }
skip = element skip { "S" | "P" | "" }
bank = element bank {
attribute bankId { xsd:nonNegativeInteger },
attribute bankIndex { xsd:nonNegativeInteger }?
}

View File

@ -0,0 +1,193 @@
<?xml version="1.0" encoding="UTF-8"?>
<grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
<define name="memoryType">
<optional>
<attribute name="location">
<data type="nonNegativeInteger"/>
</attribute>
</optional>
<ref name="shortName"/>
<optional>
<ref name="longName"/>
</optional>
<ref name="frequency"/>
<ref name="SquelchList"/>
<optional>
<ref name="squelchSetting"/>
</optional>
<ref name="duplex"/>
<ref name="offset"/>
<ref name="mode"/>
<ref name="tuningStep"/>
<optional>
<ref name="skip"/>
</optional>
<optional>
<ref name="bank"/>
</optional>
<optional>
<ref name="dv"/>
</optional>
</define>
<define name="shortName">
<element name="shortName">
<data type="string">
<param name="pattern">[A-Z0-9/ &gt;\-]{0,6}</param>
</data>
</element>
</define>
<define name="frequencyType">
<attribute name="units">
<choice>
<value>Hz</value>
<value>kHz</value>
<value>MHz</value>
<value>GHz</value>
</choice>
</attribute>
<data type="decimal"/>
</define>
<define name="longName">
<element name="longName">
<data type="string">
<param name="pattern">[.A-Za-z0-9/ &gt;\-]{0,16}</param>
</data>
</element>
</define>
<define name="frequency">
<element name="frequency">
<ref name="frequencyType"/>
</element>
</define>
<define name="SquelchList">
<optional>
<element name="squelch">
<ref name="squelchType"/>
</element>
</optional>
<optional>
<element name="squelch">
<ref name="squelchType"/>
</element>
</optional>
<optional>
<element name="squelch">
<ref name="squelchType"/>
</element>
</optional>
</define>
<define name="squelchType">
<optional>
<element name="tone">
<data type="decimal">
<param name="minInclusive">67.0</param>
<param name="maxInclusive">254.1</param>
</data>
</element>
</optional>
<optional>
<!-- could also use enumeration -->
<element name="code">
<data type="positiveInteger"/>
</element>
</optional>
<optional>
<element name="polarity">
<data type="string">
<param name="pattern">[RN]{2}</param>
</data>
</element>
</optional>
<optional>
<attribute name="id"/>
</optional>
<optional>
<attribute name="type"/>
</optional>
</define>
<define name="offset">
<element name="offset">
<ref name="frequencyType"/>
</element>
</define>
<define name="tuningStep">
<element name="tuningStep">
<ref name="frequencyType"/>
</element>
</define>
<define name="squelchSetting">
<element name="squelchSetting">
<data type="string"/>
</element>
</define>
<define name="duplex">
<element name="duplex">
<choice>
<value>positive</value>
<value>negative</value>
<value>none</value>
</choice>
</element>
</define>
<define name="mode">
<element name="mode">
<choice>
<value>FM</value>
<value>NFM</value>
<value>WFM</value>
<value>AM</value>
<value>NAM</value>
<value>DV</value>
</choice>
</element>
</define>
<define name="dv">
<element name="dv">
<element name="urcall">
<ref name="callsignType"/>
</element>
<element name="rpt1call">
<ref name="callsignType"/>
</element>
<element name="rpt2call">
<ref name="callsignType"/>
</element>
<optional>
<element name="digitalCode">
<ref name="digitalCodeType"/>
</element>
</optional>
</element>
</define>
<define name="callsignType">
<data type="string">
<param name="pattern">[A-Z0-9/ ]*</param>
</data>
</define>
<define name="digitalCodeType">
<data type="integer">
<param name="minInclusive">0</param>
</data>
</define>
<define name="skip">
<element name="skip">
<choice>
<value>S</value>
<value>P</value>
<value/>
</choice>
</element>
</define>
<define name="bank">
<element name="bank">
<attribute name="bankId">
<data type="nonNegativeInteger"/>
</attribute>
<optional>
<attribute name="bankIndex">
<data type="nonNegativeInteger"/>
</attribute>
</optional>
</element>
</define>
</grammar>