summaryrefslogtreecommitdiff
path: root/officecfg/registry/component-update.xsd
blob: b61688e73ad6cf836605c0687f762225db8fb7d0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://openoffice.org/2001/registry" xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified" attributeFormDefault="qualified">
	<xs:annotation>
		<xs:documentation>defines the document format for configuration update documents.
         Updates are increments to default documents like a component schema and contain
         additional information for merging and access control</xs:documentation>
	</xs:annotation>
	<xs:redefine schemaLocation="component-types.xsd">
		<xs:complexType name="value">
			<xs:annotation>
				<xs:documentation>adds the xml:lang attribute for localized information. Only the update format is allowed to contain localized data.</xs:documentation>
			</xs:annotation>
			<xs:simpleContent>
				<xs:extension base="oor:value">
					<xs:attribute ref="xml:lang"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:redefine>
	<xs:complexType name="node">
		<xs:annotation>
			<xs:documentation>Identifies a node in the schema by it's name and position within the hierarchy. Overrides or adds information from the base layer. A node can be of type set or group.</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="oor:basic-node">
				<xs:choice minOccurs="0" maxOccurs="unbounded">
					<xs:element name="node" type="oor:node"/>
					<xs:element name="prop" type="oor:prop">
						<xs:unique name="uniqueLang">
							<xs:selector xpath="oor:value"/>
							<xs:field xpath="@xml:lang"/>
						</xs:unique>
					</xs:element>
				</xs:choice>
				<xs:attributeGroup ref="oor:update-info"/>
	            <xs:attribute ref="oor:mandatory"/>
				<xs:attributeGroup ref="oor:node-type-info" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="prop">
		<xs:annotation>
			<xs:documentation>adds operational info to a property, should only be applied for dynamic properties. Dynamic properties are not available in the component schema and are added or removed during runtime.</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="oor:basic-prop">
				<xs:sequence minOccurs="0" maxOccurs="unbounded">
					<xs:element name="value" type="oor:value" nillable="true"/>
				</xs:sequence>
				<xs:attributeGroup ref="oor:update-info"/>
				<xs:attribute ref="oor:type" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:attributeGroup name="update-info">
		<xs:attribute ref="oor:finalized"/>
		<xs:attribute ref="oor:readonly"/>
		<xs:attribute ref="oor:op"/>
	</xs:attributeGroup>
	<xs:attribute name="op" use="optional" default="modify">
		<xs:annotation>
			<xs:documentation>defines a list of possible operations, which are applied during merging of node fragments.</xs:documentation>
		</xs:annotation>
		<xs:simpleType>
			<xs:restriction base="xs:string">
				<xs:enumeration value="modify"/>
				<xs:enumeration value="replace"/>
				<xs:enumeration value="remove"/>
				<xs:enumeration value="reset"/>
			</xs:restriction>
		</xs:simpleType>
	</xs:attribute>
	<xs:attribute name="finalized" type="xs:boolean" use="optional" default="false">
		<xs:annotation>
			<xs:documentation>indicates that the content of a node and its descendant nodes are not allowed to be overwritten.</xs:documentation>
		</xs:annotation>
	</xs:attribute>
	<xs:attribute name="mandatory" type="xs:boolean" default="false">
		<xs:annotation>
			<xs:documentation>specifies that a node MUST be present and can not be removed or replaced by a node during the merging process. </xs:documentation>
		</xs:annotation>
	</xs:attribute>
	<xs:attribute name="readonly" type="xs:boolean" use="optional" default="false">
		<xs:annotation>
			<xs:documentation>determines, whether a node and its descendants are readonly or not. This is a computed attribute and can not be set by an application.</xs:documentation>
		</xs:annotation>
	</xs:attribute>
	<xs:element name="component-data">
		<xs:annotation>
			<xs:documentation>root element of the update document.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:extension base="oor:basic-node">
				<xs:choice minOccurs="0" maxOccurs="unbounded">
					<xs:element name="node" type="oor:node"/>
					<xs:element name="prop" type="oor:prop">
						<xs:unique name="uniqueLang">
							<xs:selector xpath="oor:value"/>
							<xs:field xpath="@xml:lang"/>
						</xs:unique>
					</xs:element>
				</xs:choice>
				<xs:attributeGroup ref="oor:update-info"/>
                <xs:attribute ref="oor:package"/>
			</xs:extension>
		</xs:complexType>
		<xs:unique name="member">
			<xs:selector xpath="oor:node|oor:prop"/>
			<xs:field xpath="@oor:name"/>
		</xs:unique>
	</xs:element>
</xs:schema>