MINI MINI MANI MO
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="service">
<xs:complexType>
<xs:sequence>
<xs:element name="short" type="xs:string" minOccurs="0"/>
<xs:element name="description" type="xs:string" minOccurs="0"/>
<xs:element name="port" type="porttype" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="source-port" type="porttype" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="protocol" type="prototype" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="module" type="nametype" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="destination" type="desttype" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="version" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:complexType name="nametype">
<xs:attribute name="name" type="xs:string" use="required"/>
</xs:complexType>
<xs:complexType name="prototype">
<xs:attribute name="value" type="xs:string" use="required"/>
</xs:complexType>
<xs:complexType name="porttype">
<xs:attribute name="port" type="porttyperestrict" use="required"/>
<xs:attribute name="protocol" type="xs:string" use="required"/>
</xs:complexType>
<xs:simpleType name="porttyperestrict">
<xs:restriction base="xs:string">
<xs:pattern value="([0-9]+(\-[0-9]+)?)?"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="desttype">
<xs:attribute name="ipv4" type="ipv4addrtype"/>
<xs:attribute name="ipv6" type="ipv6addrtype"/>
</xs:complexType>
<xs:simpleType name="ipv4addrtype">
<xs:restriction base="xs:string">
<xs:pattern value="([0-9]{1,3}\.){3}[0-9]{1,3}(/[0-9]{1,2})?"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ipv6addrtype">
<xs:restriction base="xs:string">
<!-- very rough RE -->
<xs:pattern value="[0-9A-Fa-f:]{3,39}(/[0-9]{1,3})?"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
OHA YOOOO