<?xml version="1.0"?> <!-- A Relax NG schema for common libvirt XML storage elements --> <grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> <!-- This schema is not designed for standalone use; another file must include both this file and basictypes.rng --> <define name='encryption'> <element name='encryption'> <attribute name='format'> <choice> <value>default</value> <value>qcow</value> </choice> </attribute> <zeroOrMore> <ref name='secret'/> </zeroOrMore> </element> </define> <define name='secret'> <element name='secret'> <attribute name='type'> <choice> <value>passphrase</value> </choice> </attribute> <attribute name='uuid'> <ref name="UUID"/> </attribute> </element> </define> <define name='compat'> <element name='compat'> <data type='string'> <param name='pattern'>[0-9]+\.[0-9]+</param> </data> </element> </define> <define name='fileFormatFeatures'> <element name='features'> <interleave> <optional> <element name='lazy_refcounts'> <empty/> </element> </optional> </interleave> </element> </define> <!-- split the list of known storage formats into two, those where we know how to follow backing chains, and all others --> <define name='storageFormatBacking'> <choice> <value>cow</value> <value>qcow</value> <value>qcow2</value> <value>qed</value> <value>vmdk</value> </choice> </define> <define name='storageFormat'> <choice> <value>raw</value> <value>dir</value> <value>bochs</value> <value>cloop</value> <value>dmg</value> <value>iso</value> <value>vpc</value> <value>vdi</value> <value>fat</value> <value>vhd</value> <value>ploop</value> <ref name='storageFormatBacking'/> </choice> </define> <define name='storageStartupPolicy'> <!-- Use a combine='choice' override in client files that want to add additional attributes to a <source> sub-element associated with a storage source --> <notAllowed/> </define> <define name='storageSourceExtra'> <!-- Use a combine='choice' override in client files that want to add additional elements as siblings of a <source> sub-element associated with a storage source --> <notAllowed/> </define> <define name='permissions'> <optional> <element name='permissions'> <interleave> <optional> <element name='mode'> <ref name='octalMode'/> </element> </optional> <optional> <element name='owner'> <choice> <ref name='unsignedInt'/> <value>-1</value> </choice> </element> </optional> <optional> <element name='group'> <choice> <ref name='unsignedInt'/> <value>-1</value> </choice> </element> </optional> <optional> <element name='label'> <text/> </element> </optional> </interleave> </element> </optional> </define> </grammar>