relax-ng for pisi
This commit is contained in:
+442
@@ -0,0 +1,442 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- RELAX NG schema file for PISI pspec.xml files -->
|
||||
<!-- http://www.pardus.org.tr/projeler/pisi/ -->
|
||||
|
||||
<grammar xmlns="http://relaxng.org/ns/structure/1.0">
|
||||
|
||||
<!-- Start Document -->
|
||||
<start>
|
||||
<choice>
|
||||
<ref name="PISI"/>
|
||||
</choice>
|
||||
</start>
|
||||
|
||||
<!-- PISI Section -->
|
||||
<define name="PISI">
|
||||
<element name="PISI">
|
||||
<ref name="Source"/>
|
||||
<oneOrMore>
|
||||
<ref name="Package"/>
|
||||
</oneOrMore>
|
||||
<ref name="History"/>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<!-- Source Section -->
|
||||
<define name="Source">
|
||||
<element name="Source">
|
||||
<ref name="Name"/>
|
||||
<ref name="Homepage"/>
|
||||
<ref name="Packager"/>
|
||||
<oneOrMore>
|
||||
<ref name="License"/>
|
||||
</oneOrMore>
|
||||
<optional>
|
||||
<ref name="Icon"/>
|
||||
</optional>
|
||||
<oneOrMore>
|
||||
<ref name="IsA"/>
|
||||
</oneOrMore>
|
||||
<optional>
|
||||
<ref name="PartOf"/>
|
||||
</optional>
|
||||
<oneOrMore>
|
||||
<ref name="Summary"/>
|
||||
</oneOrMore>
|
||||
<zeroOrMore>
|
||||
<!-- FIXME: should be oneOrMore -->
|
||||
<ref name="Description"/>
|
||||
</zeroOrMore>
|
||||
<ref name="Archive"/>
|
||||
<optional>
|
||||
<ref name="BuildDependencies"/>
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="Patches"/>
|
||||
</optional>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<!-- Package Section -->
|
||||
<define name="Package">
|
||||
<element name="Package">
|
||||
<ref name="Name"/>
|
||||
<optional>
|
||||
<ref name="License"/>
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="IsA"/>
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="PartOf"/>
|
||||
</optional>
|
||||
<zeroOrMore>
|
||||
<ref name="Summary"/>
|
||||
</zeroOrMore>
|
||||
<zeroOrMore>
|
||||
<ref name="Description"/>
|
||||
</zeroOrMore>
|
||||
<optional>
|
||||
<ref name="RuntimeDependencies"/>
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="Conflicts"/>
|
||||
</optional>
|
||||
<ref name="Files"/>
|
||||
<optional>
|
||||
<ref name="AdditionalFiles"/>
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="Provides"/>
|
||||
</optional>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<!-- History Section -->
|
||||
<define name="History">
|
||||
<element name="History">
|
||||
<oneOrMore>
|
||||
<ref name="Update"/>
|
||||
</oneOrMore>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
|
||||
<!-- Name -->
|
||||
<define name="Name">
|
||||
<element name="Name">
|
||||
<text/>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<!-- Homepage -->
|
||||
<define name="Homepage">
|
||||
<element name="Homepage">
|
||||
<text/>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<!-- Icon -->
|
||||
<define name="Icon">
|
||||
<element name="Icon">
|
||||
<text/>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<!-- Packager -->
|
||||
<define name="Packager">
|
||||
<element name="Packager">
|
||||
<ref name="Name"/>
|
||||
<ref name="Email"/>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<!-- Email -->
|
||||
<define name="Email">
|
||||
<element name="Email">
|
||||
<text/>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<!-- License -->
|
||||
<define name="License">
|
||||
<element name="License">
|
||||
<text/>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<!-- IsA -->
|
||||
<define name="IsA">
|
||||
<element name="IsA">
|
||||
<!-- TODO: Define available choices? -->
|
||||
<text/>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<!-- PartOf -->
|
||||
<define name="PartOf">
|
||||
<element name="PartOf">
|
||||
<text/>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<!-- Summary -->
|
||||
<define name="Summary">
|
||||
<element name="Summary">
|
||||
<ref name="attlist.Summary"/>
|
||||
<text/>
|
||||
</element>
|
||||
</define>
|
||||
<!-- attlist.Summary -->
|
||||
<define name="attlist.Summary" combine="interleave">
|
||||
<optional>
|
||||
<attribute name="xml:lang"/>
|
||||
</optional>
|
||||
</define>
|
||||
|
||||
<!-- Description -->
|
||||
<define name="Description">
|
||||
<element name="Description">
|
||||
<ref name="attlist.Description"/>
|
||||
<text/>
|
||||
</element>
|
||||
</define>
|
||||
<!-- attlist.Description -->
|
||||
<define name="attlist.Description" combine="interleave">
|
||||
<optional>
|
||||
<attribute name="xml:lang"/>
|
||||
</optional>
|
||||
</define>
|
||||
|
||||
<!-- Archive -->
|
||||
<define name="Archive">
|
||||
<element name="Archive">
|
||||
<ref name="attlist.Archive"/>
|
||||
<text/>
|
||||
</element>
|
||||
</define>
|
||||
<!-- attlist.Archive -->
|
||||
<define name="attlist.Archive" combine="interleave">
|
||||
<group>
|
||||
<attribute name="sha1sum"/>
|
||||
<!-- NOTE: we can limit possible types here to the ones that pisi know -->
|
||||
<attribute name="type"/>
|
||||
</group>
|
||||
</define>
|
||||
|
||||
<!-- BuildDependencies -->
|
||||
<define name="BuildDependencies">
|
||||
<element name="BuildDependencies">
|
||||
<oneOrMore>
|
||||
<ref name="Dependency"/>
|
||||
</oneOrMore>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<!-- Dependency -->
|
||||
<define name="Dependency">
|
||||
<element name="Dependency">
|
||||
<ref name="attlist.VersionReleaseToFrom"/>
|
||||
<text/>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<!-- attlist.VersionReleaseToFrom -->
|
||||
<define name="attlist.VersionReleaseToFrom">
|
||||
<group>
|
||||
<optional>
|
||||
<attribute name="versionFrom"/>
|
||||
</optional>
|
||||
<optional>
|
||||
<attribute name="versionTo"/>
|
||||
</optional>
|
||||
<optional>
|
||||
<attribute name="version"/>
|
||||
</optional>
|
||||
<optional>
|
||||
<attribute name="releaseFrom"/>
|
||||
</optional>
|
||||
<optional>
|
||||
<attribute name="releaseTo"/>
|
||||
</optional>
|
||||
<optional>
|
||||
<attribute name="release"/>
|
||||
</optional>
|
||||
</group>
|
||||
</define>
|
||||
|
||||
<!-- Patches -->
|
||||
<define name="Patches">
|
||||
<element name="Patches">
|
||||
<oneOrMore>
|
||||
<ref name="Patch"/>
|
||||
</oneOrMore>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<!-- Patch -->
|
||||
<define name="Patch">
|
||||
<element name="Patch">
|
||||
<ref name="attlist.Patch"/>
|
||||
<text/>
|
||||
</element>
|
||||
</define>
|
||||
<!-- attlist.Patch -->
|
||||
<define name="attlist.Patch" combine="interleave">
|
||||
<group>
|
||||
<optional>
|
||||
<attribute name="compressionType"/>
|
||||
</optional>
|
||||
<optional>
|
||||
<attribute name="level"/>
|
||||
</optional>
|
||||
<optional>
|
||||
<attribute name="target"/>
|
||||
</optional>
|
||||
</group>
|
||||
</define>
|
||||
|
||||
<!-- Provides -->
|
||||
<define name="Provides">
|
||||
<element name="Provides">
|
||||
<oneOrMore>
|
||||
<ref name="COMAR"/>
|
||||
</oneOrMore>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<!-- COMAR -->
|
||||
<define name="COMAR">
|
||||
<element name="COMAR">
|
||||
<ref name="attlist.COMAR"/>
|
||||
<text/>
|
||||
</element>
|
||||
</define>
|
||||
<!-- attlist.COMAR -->
|
||||
<define name="attlist.COMAR">
|
||||
<optional>
|
||||
<attribute name="script"/>
|
||||
</optional>
|
||||
</define>
|
||||
|
||||
<!-- Conflicts -->
|
||||
<define name="Conflicts">
|
||||
<element name="Conflicts">
|
||||
<oneOrMore>
|
||||
<ref name="Conflicts.Package"/>
|
||||
</oneOrMore>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name="Conflicts.Package">
|
||||
<element name="Package">
|
||||
<ref name="attlist.VersionReleaseToFrom"/>
|
||||
<text />
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<!-- AdditionalFiles -->
|
||||
<define name="AdditionalFiles">
|
||||
<element name="AdditionalFiles">
|
||||
<oneOrMore>
|
||||
<ref name="AdditionalFile"/>
|
||||
</oneOrMore>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<!-- AdditionalFile -->
|
||||
<define name="AdditionalFile">
|
||||
<element name="AdditionalFile">
|
||||
<ref name="attlist.AdditionalFile"/>
|
||||
<text/>
|
||||
</element>
|
||||
</define>
|
||||
<!-- attlist.AdditionalFile -->
|
||||
<define name="attlist.AdditionalFile">
|
||||
<attribute name="target"/>
|
||||
<optional>
|
||||
<attribute name="permission"/>
|
||||
</optional>
|
||||
<optional>
|
||||
<attribute name="owner"/>
|
||||
</optional>
|
||||
</define>
|
||||
|
||||
<!-- RuntimeDependencies -->
|
||||
<define name="RuntimeDependencies">
|
||||
<element name="RuntimeDependencies">
|
||||
<oneOrMore>
|
||||
<ref name="Dependency"/>
|
||||
</oneOrMore>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<!-- Files -->
|
||||
<define name="Files">
|
||||
<element name="Files">
|
||||
<oneOrMore>
|
||||
<ref name="Path"/>
|
||||
</oneOrMore>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<!-- Path -->
|
||||
<define name="Path">
|
||||
<element name="Path">
|
||||
<ref name="attlist.Path"/>
|
||||
<text/>
|
||||
</element>
|
||||
</define>
|
||||
<!-- attlist.Path -->
|
||||
<define name="attlist.Path" combine="interleave">
|
||||
<group>
|
||||
<attribute name="fileType">
|
||||
<choice>
|
||||
<value>executable</value>
|
||||
<value>library</value>
|
||||
<value>data</value>
|
||||
<value>config</value>
|
||||
<value>doc</value>
|
||||
<value>man</value>
|
||||
<value>info</value>
|
||||
<value>localedata</value>
|
||||
<value>header</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
<optional>
|
||||
<attribute name="permanent">
|
||||
<choice>
|
||||
<value>false</value>
|
||||
<value>true</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
</optional>
|
||||
</group>
|
||||
</define>
|
||||
|
||||
|
||||
|
||||
<!-- Update -->
|
||||
<define name="Update">
|
||||
<element name="Update">
|
||||
<ref name="attlist.Update"/>
|
||||
<ref name="Date"/>
|
||||
<ref name="Version"/>
|
||||
<ref name="Comment"/>
|
||||
<ref name="Name"/>
|
||||
<ref name="Email"/>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<!-- attlist.Update -->
|
||||
<define name="attlist.Update" combine="interleave">
|
||||
<attribute name="release"/>
|
||||
<optional>
|
||||
<!-- FIXME: valid types must be used instead of CDATA (a.k.a choice)-->
|
||||
<attribute name="type"/>
|
||||
</optional>
|
||||
</define>
|
||||
|
||||
<!-- Date -->
|
||||
<define name="Date">
|
||||
<!-- FIXME: Take a look at xmlschema data types at http://www.w3.org/TR/xmlschema-2/#dateTime -->
|
||||
<element name="Date">
|
||||
<text/>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<!-- Version -->
|
||||
<define name="Version">
|
||||
<element name="Version">
|
||||
<text/>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<!-- Comment -->
|
||||
<define name="Comment">
|
||||
<element name="Comment">
|
||||
<text/>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
</grammar>
|
||||
Reference in New Issue
Block a user