/
ejdata.dtd
310 lines (261 loc) · 14.1 KB
/
ejdata.dtd
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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT ejdata (school?, eduGroups?, eduPlan?, courses?, results?)>
<!-- в заголовке представлен источник. атрибуты:
product - название программного средства - источника данного файла.
должен быть неизменным для всех версий данного ПО, чтобы другие программы могли
при импорте использовать платформозависимые данные
version - номер версии ПО - источника
base - содержит произвольную строку, позволяющую точно идентифицировать источник данных
eduYear - учебный год, для которого актуальны эти данные
год в 4-значном формате только первый (т.е. 2010/11 записывается как 2010) -->
<!ATTLIST ejdata
product CDATA #REQUIRED
version CDATA #IMPLIED
base CDATA #REQUIRED
eduYear CDATA #REQUIRED>
<!ELEMENT school (syncdata?,address*,weblink?)>
<!ATTLIST school
title CDATA #REQUIRED
fullname CDATA #IMPLIED>
<!ELEMENT address (#PCDATA)>
<!-- контактные данные
type - тип (email/post/phone)
-->
<!ATTLIST address
type CDATA #REQUIRED>
<!ELEMENT weblink (#PCDATA)>
<!ELEMENT syncdata ((extid|param)*)>
<!-- данные для упрощения синхронизации различных информационных систем
в элементах extid указываются известные идентификаторы данного объекта в разных ИС
см. комментарий к ejdata -->
<!ELEMENT extid (#PCDATA)>
<!ATTLIST extid
base CDATA #REQUIRED
product CDATA #REQUIRED
entity CDATA #IMPLIED>
<!ELEMENT eduGroups (eduGroup+)>
<!ELEMENT eduGroup (syncdata?, teacher* ,student*)>
<!-- учебная группа (класс).
name - полное название (5 А)
grade - только цифра класса
title - только буква класса (или другое отличительное наименование в одном grade)
section - отделение (при организационном разделении групп в школе)
type - типы подгруппы
sub - часть учеников из приписанного класса
mixed - смешанная группа учащихся разных классов
full - полный список учащихся класса (как сказано выше,
в таком случае элемент subgroup необязателен вообще)
-->
<!ATTLIST eduGroup
id CDATA #REQUIRED
name CDATA #REQUIRED
grade CDATA #IMPLIED
section CDATA #IMPLIED
title CDATA #IMPLIED
type (sub|full|mixed) #IMPLIED>
<!ELEMENT student (syncdata?)>
<!ATTLIST student
id CDATA #REQUIRED>
<!ELEMENT teacher (#PCDATA)>
<!ATTLIST teacher
id CDATA #REQUIRED>
<!ELEMENT eduPlan (subject*)>
<!ELEMENT subject (content?,param*,cycle*)>
<!ATTLIST subject
title CDATA #REQUIRED>
<!-- тег content служит для хранения текстового содержания родительского тега.
для урока это тема, для работы - название работы. для предмета - полное наименование -->
<!ELEMENT content (#PCDATA)>
<!ELEMENT param (#PCDATA)>
<!-- дополнительные параметры объекта, важные для данной информационной системы,
но вероятно не актуальные для обмена с другими системами.
зная тип экспортирующей системы из заголовка и применяемые ей доп. параметры,
можно извлекать из них полезную информацию для импортирующей системы -->
<!ATTLIST param
key CDATA #REQUIRED>
<!ELEMENT cycle (syncdata?,hours?,planning*,containers?)>
<!ATTLIST cycle
id CDATA #REQUIRED
grade CDATA #REQUIRED
subject CDATA #IMPLIED
section CDATA #IMPLIED>
<!ELEMENT hours (#PCDATA)>
<!ATTLIST hours
type (weekly|total) #REQUIRED>
<!ELEMENT planning (syncdata?, teacher?, comment?, planTheme*, materials?)>
<!ATTLIST planning
id CDATA #REQUIRED>
<!ELEMENT planTheme (syncdata?, content?, materials?)>
<!ATTLIST planTheme
id CDATA #REQUIRED
hours CDATA #IMPLIED
num CDATA #IMPLIED>
<!ELEMENT materials (book | media)+>
<!ELEMENT book (#PCDATA)>
<!ATTLIST book
authors CDATA #IMPLIED
publisher CDATA #IMPLIED
type CDATA #IMPLIED>
<!ELEMENT media (#PCDATA)>
<!ATTLIST media
mimeType CDATA #IMPLIED
url CDATA #REQUIRED>
<!ELEMENT courses (course+)>
<!ELEMENT course
(syncdata?, teacher*, eduGroup, comment?, schedule?, evaluation?, param*, containers*)>
<!-- описание учебного курса. понятие курса обозначет связку предмет-класс-учитель
дополнительные описатели курса могут быть специфичны для различных
информационных систем, поэтому разделы этих описаний опциональны.
id - идентификатор курса
cycle - учебный цикл из учебного плана
subject - название предмета
planning - идентификатор-ссылка на планирование данного курса -->
<!ATTLIST course
id CDATA #REQUIRED
cycle CDATA #IMPLIED
subject CDATA #REQUIRED
planning CDATA #IMPLIED>
<!-- тег comment содержит текстовые комментарии. в некоторых ситуациях такие комментарии
могут быть типизированы. типизация в этом случае зависит от родительского элемента -->
<!ELEMENT comment (#PCDATA)>
<!ATTLIST comment type CDATA #IMPLIED>
<!ELEMENT schedule (timeslot+)>
<!ELEMENT timeslot EMPTY>
<!ATTLIST timeslot
weekday CDATA #REQUIRED
number CDATA #REQUIRED
validSince CDATA #IMPLIED
validTo CDATA #IMPLIED
flags CDATA #IMPLIED>
<!ELEMENT evaluation (indexer?,criterion*)>
<!-- описание способов оценивания, применяемых в курсе
indexer - способ представления отметок (при бескритериальном оценивании),
criterion - описание критериев при критериальном оценивании
id - идентификатор. если несколько курсов используют однин набор критериев,
можно описать его полностью только в первом, а в остальных сослаться по id -->
<!ATTLIST evaluation
id CDATA #IMPLIED>
<!ELEMENT criterion (comment?,indexer?)>
<!ATTLIST criterion
idx CDATA #REQUIRED
title CDATA #REQUIRED
max CDATA #IMPLIED
weight CDATA #IMPLIED>
<!ELEMENT indexer (media?,indexRow+)>
<!ATTLIST indexer
id CDATA #REQUIRED
type (text|color|image|media) #REQUIRED>
<!ELEMENT indexRow (comment)?>
<!ATTLIST indexRow
present CDATA #REQUIRED
value CDATA #REQUIRED>
<!ELEMENT containers (container+)>
<!-- раздел хранения отметок. type определяет, что это за отметки
lesson - отметки за уроки - о посещаемости (Н) и текстовые замечания о поведении
work - оценивание за выполненные работы
itog - итоговые отметки
prognosis - прогнозы итоговых отметок, вычисленные на основании текущих
other - прочие (неучтенные в данной типизации) -->
<!ATTLIST containers
type (lesson|work|itog|prognosis|other) #REQUIRED>
<!ELEMENT container (syncdata?,content?,planTheme?,task?,criteria?,calc?,param*,marks?)>
<!-- контейнер - это описание того, за что выставляются отметки.
тип контейнера описывается в теге containers (см. выше).
id - идентификатор в БД
num - это не просто номер по порядку (порядок задается порядком следования в списке).
это номер, актуальный для данных.
например, номер четверти для итоговой или номер урока в учебном дне
date - дата выставления оценок этого контейнера (проведение урока/работы)
title - краткое наименование контейнера, если не использется дата
type - внутренняя типизация (работа контрольная/домашняя/лабораторная) -->
<!ATTLIST container
id CDATA #REQUIRED
num CDATA #IMPLIED
date CDATA #IMPLIED
title CDATA #IMPLIED
type CDATA #IMPLIED>
<!ELEMENT task (#PCDATA)>
<!ELEMENT criteria (criterion)+>
<!ELEMENT calc EMPTY>
<!-- информация для учета оценок при вычислениях итоговых
weight - весовой коэффициент - вклад отметки в итоговую
compulsory - обязательность наличия отметки. если true, а отметка для
учащегося не стоит, в рассчете учитывать как 0 (неудовлетворительно) -->
<!ATTLIST calc
weight CDATA "1"
compulsory (true|false) "false">
<!ELEMENT marks (mark)+>
<!ELEMENT mark (present*,crmark*,weblink?,comment?,param*)>
<!-- собственно оценка. достаточно указать только значение,
дополнительные опции - во вложенных тегах
student - идентификатор учащегося
value - текстовое значение отметки, которое показывается пользователям.
если внутреннее представление отличается от пользовательского,
внутреннее указывается во вложенном теге present.
-->
<!ATTLIST mark
student CDATA #REQUIRED
value CDATA #IMPLIED>
<!ELEMENT present (#PCDATA)>
<!-- различные способы представления отметки. по типам
inner - для сохранения доп. информации о внутреннем
представлении в информационной системе
text - символьное представление (цифрами или буквами)
color - цветовое представление (код цвета ячейки)
image - изображением (имя файла картинки)
media - произвольным медиаобъектом, тогда нужно указывать mimeType -->
<!ATTLIST present
type (inner|text|color|image|media) #REQUIRED
mimeType CDATA #IMPLIED>
<!ELEMENT crmark (present)?>
<!-- критериальные отметки -->
<!ATTLIST crmark
criter CDATA #REQUIRED
value CDATA #REQUIRED>
<!ELEMENT results (cycle,event)>
<!--
cycle - итоговые оценки для каждого цикла : containers[@type='itog']
event - всевозможные события (учебные компоненты), не описываемые строго
в структуре курсов/уроков/работ.
это могут быть экскурсии, спектакли, олимпиады
также сюда попадают успешные работы,
которые сам ученик попросил занести в портфолио -->
<!ELEMENT event (syncdata?, content?, weblink?, achievement*)>
<!-- описание события, которое стало источником достижения.
название олимпиады или работы или приказ директора с благодарностью.
возможно указание ссылки на развернутое описание
id - идентификатор
date - дата проведения олимпиады/работы или издания приказа
type - возможность типизации событий
title - название события
source - источник события (организатор)
cycle - отсылка к учебному циклу, если событие имеет к нему отношение
containerType - если это событие яляется также работой/уроком, то указывается тип контейнера
containerID - ссылка на контейнер, содержащий описание и оценки для данного события -->
<!ATTLIST event
id CDATA #IMPLIED
date CDATA #IMPLIED
type CDATA #IMPLIED
title CDATA #REQUIRED
source CDATA #IMPLIED
cycle CDATA #IMPLIED
containerType CDATA #IMPLIED
containerID CDATA #IMPLIED>
<!ELEMENT achievement (content, weblink?, reaction*)>
<!-- описание достижения учащегося. (в поле content)
возможно указание ссылки на работу учащегося
и различние оценки (например, рецензия) - в поле reaction
id - идентификатор
student - идентификатор учащегося
rank - возможность оценки величины достижения -->
<!ATTLIST achievement
id CDATA #IMPLIED
student CDATA #REQUIRED
rank CDATA #IMPLIED>
<!ELEMENT reaction (#PCDATA)>
<!-- реакции на достижения учащегося. Оценки, рецензии, отзывы
source - источник реакции (автор)
type - тип реакции -->
<!ATTLIST reaction
source CDATA #IMPLIED
type CDATA #IMPLIED>