1
<?xml version="1.0" encoding="UTF-8"?>
2
<!--
3
    OASIS OpenDocument v1.0
4
    OASIS standard, 1 May 2005
5
    Relax-NG Manifest Schema
6
7
    $Id$
8
9
    © 2002-2005 OASIS Open
10
    © 1999-2005 Sun Microsystems, Inc.
11
-->
12
13
<grammar 
14
    xmlns="http://relaxng.org/ns/structure/1.0"
15
16
    datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
17
18
    xmlns:manifest="urn:oasis:names:tc:opendocument:xmlns:manifest:1.0">
19
<define name="manifest">
20
    <element name="manifest:manifest">
21
        <oneOrMore>
22
            <ref name="file-entry"/>
23
        </oneOrMore>
24
    </element>
25
</define>
26
27
<start>
28
    <choice>
29
        <ref name="manifest"/>
30
    </choice>
31
</start>
32
<define name="file-entry">
33
    <element name="manifest:file-entry">
34
        <ref name="file-entry-attlist"/>
35
        <optional>
36
            <ref name="encryption-data"/>
37
        </optional>
38
    </element>
39
</define>
40
<define name="file-entry-attlist" combine="interleave">
41
    <attribute name="manifest:full-path">
42
        <data type="string"/>
43
    </attribute>
44
</define>
45
<define name="file-entry-attlist" combine="interleave">
46
    <optional>
47
        <attribute name="manifest:size">
48
            <data type="nonNegativeInteger"/>
49
        </attribute>
50
    </optional>
51
</define>
52
<define name="file-entry-attlist" combine="interleave">
53
    <attribute name="manifest:media-type">
54
        <data type="string"/>
55
    </attribute>
56
</define>
57
<define name="encryption-data">
58
    <element name="manifest:encryption-data">
59
        <ref name="encryption-data-attlist"/>
60
        <ref name="algorithm"/>
61
        <ref name="key-derivation"/>
62
    </element>
63
</define>
64
<define name="encryption-data-attlist" combine="interleave">
65
    <attribute name="manifest:checksum-type">
66
        <data type="string"/>
67
    </attribute>
68
</define>
69
<define name="encryption-data-attlist" combine="interleave">
70
    <attribute name="manifest:checksum">
71
        <data type="base64Binary"/>
72
    </attribute>
73
</define>
74
<define name="algorithm">
75
    <element name="manifest:algorithm">
76
        <ref name="algorithm-attlist"/>
77
        <empty/>
78
    </element>
79
</define>
80
<define name="algorithm-attlist" combine="interleave">
81
    <attribute name="manifest:algorithm-name">
82
        <data type="string"/>
83
    </attribute>
84
</define>
85
<define name="algorithm-attlist" combine="interleave">
86
    <attribute name="manifest:initialisation-vector">
87
        <data type="base64Binary"/>
88
    </attribute>
89
</define>
90
<define name="key-derivation">
91
    <element name="manifest:key-derivation">
92
        <ref name="key-derivation-attlist"/>
93
        <empty/>
94
    </element>
95
</define>
96
<define name="key-derivation-attlist" combine="interleave">
97
    <attribute name="manifest:key-derivation-name">
98
        <data type="string"/>
99
    </attribute>
100
</define>
101
<define name="key-derivation-attlist" combine="interleave">
102
    <attribute name="manifest:salt">
103
        <data type="base64Binary"/>
104
    </attribute>
105
</define>
106
<define name="key-derivation-attlist" combine="interleave">
107
    <attribute name="manifest:iteration-count">
108
            <data type="nonNegativeInteger"/>
109
        </attribute>
110
</define>
111
</grammar>