summaryrefslogtreecommitdiff
path: root/plugin.xsd
diff options
context:
space:
mode:
Diffstat (limited to 'plugin.xsd')
-rw-r--r--plugin.xsd89
1 files changed, 89 insertions, 0 deletions
diff --git a/plugin.xsd b/plugin.xsd
new file mode 100644
index 0000000..7f9975b
--- /dev/null
+++ b/plugin.xsd
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://portato.sourceforge.net/plugin" targetNamespace="http://portato.sourceforge.net/plugin" elementFormDefault="qualified">
+ <xs:element name="plugin">
+ <xs:complexType>
+ <xs:all>
+ <xs:element name="name" type="string" />
+ <xs:element name="author" type="string" />
+ <xs:element name="import" type="importString" minOccurs="0"/>
+ <xs:element name="frontends" type="stringList" minOccurs="0" />
+ <xs:element name="hooks">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="hook" minOccurs="1" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="connect" minOccurs="1" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="type" default="before">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="before" />
+ <xs:enumeration value="override" />
+ <xs:enumeration value="after" />
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="type" type="string" use="required" />
+ <xs:attribute name="call" type="functionCall" use="required" />
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="options" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="option" minOccurs="1" maxOccurs="unbounded" type="string" />
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="menu" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="item" minOccurs="1" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="string">
+ <xs:attribute name="call" type="functionCall" use="required" />
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:all>
+ </xs:complexType>
+ </xs:element>
+ <xs:simpleType name="importString">
+ <xs:restriction base="xs:string">
+ <xs:pattern value="([a-zA-Z_]+\.?)+" />
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="functionCall">
+ <xs:restriction base="xs:string">
+ <xs:pattern value="[a-zA-Z_][0-9a-zA-Z_]*" />
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="string">
+ <xs:restriction base="xs:string">
+ <xs:minLength value="1" />
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="_stringList">
+ <xs:list itemType="string"/>
+ </xs:simpleType>
+ <xs:simpleType name="stringList">
+ <xs:restriction base="_stringList">
+ <xs:minLength value="1" />
+ </xs:restriction>
+ </xs:simpleType>
+</xs:schema>