<?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>