<?xml version="1.0"?> <!-- A Relax NG schema for the libvirt domain snapshot properties XML format --> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <ref name='domainsnapshot'/> </start> <include href='domaincommon.rng'/> <define name='domainsnapshot'> <element name='domainsnapshot'> <interleave> <optional> <element name='name'> <text/> </element> </optional> <optional> <element name='description'> <text/> </element> </optional> <optional> <element name='state'> <ref name='state'/> </element> </optional> <optional> <element name='creationTime'> <text/> </element> </optional> <optional> <element name='memory'> <choice> <attribute name='snapshot'> <choice> <value>no</value> <value>internal</value> </choice> </attribute> <group> <optional> <attribute name='snapshot'> <value>external</value> </attribute> </optional> <attribute name='file'> <ref name='absFilePath'/> </attribute> </group> </choice> <empty/> </element> </optional> <optional> <element name='disks'> <zeroOrMore> <ref name='disksnapshot'/> </zeroOrMore> </element> </optional> <optional> <element name='active'> <choice> <value>0</value> <value>1</value> </choice> </element> </optional> <optional> <choice> <element name='domain'> <element name='uuid'> <ref name="UUID"/> </element> </element> <!-- Nested grammar ensures that any of our overrides of storagecommon/domaincommon defines do not conflict with any domain.rng overrides. --> <grammar> <include href='domain.rng'/> </grammar> </choice> </optional> <optional> <element name='parent'> <element name='name'> <text/> </element> </element> </optional> <optional> <element name='cookie'> <zeroOrMore> <ref name='customElement'/> </zeroOrMore> </element> </optional> </interleave> </element> </define> <define name='state'> <choice> <value>nostate</value> <value>running</value> <value>blocked</value> <value>paused</value> <value>shutdown</value> <value>shutoff</value> <value>crashed</value> <value>disk-snapshot</value> </choice> </define> <define name='storageSourceExtra' combine='choice'> <!-- overrides the no-op version in storagecommon.rng --> <ref name='disksnapshotdriver'/> </define> <define name='disksnapshot'> <element name='disk'> <attribute name='name'> <choice> <ref name='diskTarget'/> <ref name='absFilePath'/> </choice> </attribute> <choice> <attribute name='snapshot'> <value>no</value> </attribute> <attribute name='snapshot'> <value>internal</value> </attribute> <group> <optional> <attribute name='snapshot'> <value>external</value> </attribute> </optional> <choice> <group> <optional> <attribute name='type'> <value>file</value> </attribute> </optional> <interleave> <optional> <element name='source'> <optional> <attribute name='file'> <ref name='absFilePath'/> </attribute> </optional> <optional> <ref name='storageStartupPolicy'/> </optional> <empty/> </element> </optional> <ref name='storageSourceExtra'/> </interleave> </group> <group> <attribute name='type'> <value>block</value> </attribute> <interleave> <optional> <element name="source"> <attribute name="dev"> <ref name="absFilePath"/> </attribute> <empty/> </element> </optional> <ref name='storageSourceExtra'/> </interleave> </group> <ref name='diskSourceNetwork'/> </choice> </group> </choice> </element> </define> <define name='disksnapshotdriver'> <optional> <element name='driver'> <optional> <attribute name='type'> <ref name='storageFormatBacking'/> </attribute> </optional> <empty/> </element> </optional> </define> </grammar>