<?xml version=“1.0” encoding=“UTF-8”?> <!–
OASIS OpenDocument v1.0 OASIS standard, 1 May 2005 Relax-NG Manifest Schema $Id$ © 2002-2005 OASIS Open © 1999-2005 Sun Microsystems, Inc.
–>
<grammar
xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes" xmlns:manifest="urn:oasis:names:tc:opendocument:xmlns:manifest:1.0">
<define name=“manifest”>
<element name="manifest:manifest"> <oneOrMore> <ref name="file-entry"/> </oneOrMore> </element>
</define>
<start>
<choice> <ref name="manifest"/> </choice>
</start> <define name=“file-entry”>
<element name="manifest:file-entry"> <ref name="file-entry-attlist"/> <optional> <ref name="encryption-data"/> </optional> </element>
</define> <define name=“file-entry-attlist” combine=“interleave”>
<attribute name="manifest:full-path"> <data type="string"/> </attribute>
</define> <define name=“file-entry-attlist” combine=“interleave”>
<optional> <attribute name="manifest:size"> <data type="nonNegativeInteger"/> </attribute> </optional>
</define> <define name=“file-entry-attlist” combine=“interleave”>
<attribute name="manifest:media-type"> <data type="string"/> </attribute>
</define> <define name=“encryption-data”>
<element name="manifest:encryption-data"> <ref name="encryption-data-attlist"/> <ref name="algorithm"/> <ref name="key-derivation"/> </element>
</define> <define name=“encryption-data-attlist” combine=“interleave”>
<attribute name="manifest:checksum-type"> <data type="string"/> </attribute>
</define> <define name=“encryption-data-attlist” combine=“interleave”>
<attribute name="manifest:checksum"> <data type="base64Binary"/> </attribute>
</define> <define name=“algorithm”>
<element name="manifest:algorithm"> <ref name="algorithm-attlist"/> <empty/> </element>
</define> <define name=“algorithm-attlist” combine=“interleave”>
<attribute name="manifest:algorithm-name"> <data type="string"/> </attribute>
</define> <define name=“algorithm-attlist” combine=“interleave”>
<attribute name="manifest:initialisation-vector"> <data type="base64Binary"/> </attribute>
</define> <define name=“key-derivation”>
<element name="manifest:key-derivation"> <ref name="key-derivation-attlist"/> <empty/> </element>
</define> <define name=“key-derivation-attlist” combine=“interleave”>
<attribute name="manifest:key-derivation-name"> <data type="string"/> </attribute>
</define> <define name=“key-derivation-attlist” combine=“interleave”>
<attribute name="manifest:salt"> <data type="base64Binary"/> </attribute>
</define> <define name=“key-derivation-attlist” combine=“interleave”>
<attribute name="manifest:iteration-count"> <data type="nonNegativeInteger"/> </attribute>
</define> </grammar>