Наприклад, в житті часто виникає ситуація, коли людина протягом дня робить позначки в щоденнику. Кожному повідомленню присвоюється унікальний ідентифікатор number. Також протягом дня виникають які-небудь коментарі, які можна записувати, а можна і не записувати. Якщо виникає необхідність записати коментар , його необхідно пов'язати з відповідною позначкою.
Завтра відбудеться лекція з Web-дизану о 13.25
Терміново здати звіт
Що важливіше лекція або звіт?
Не забути конспект
.
DTD-схема для даного документа виглядатиме так:
1:
2:
3:
4:
5:
6:day CDATA #REQUIRED
7:month CDATA #REQUIRED
8:year CDATA #FIXED "2009">
9:
10:
11:
12:hh CDATA #REQUIRED
13:mm CDATA #REQUIRED
14:ss CDATA #IMPLIED>
15:
16:
17:
18:number ID #REQUIRED
19:from CDATA #REQUIRED>
20:
21:
22:
23:txt IDREF #REQUIRED>
24:
25:]>
26:
27:
28:
29:
30:
31:Завтра відбудеться лекція з Web-дизану о 13.25
32:
33:
34:Не забути конспект
35:
36:
37:
38:
39:Терміново здати звіт. Завтра останній термін
40:
41:
42:Що важливіше лекція або звіт?
43:
44:.
Отже, запис в рядку 3:
говорить про те, що елемент note повинен містити елементиdate*, time+, text+, comment+,які ідуть у порядку їх опису. Причому date може використовуватися скільки завгодно разів (*) або не використовуватися взагалі, елементиtime, text, comment– повинні використовуватися мінімум один раз. Знак (*) у кінці специфікації елемента говорить про те, що група елементів може повторюватися скільки завгодно разів.
У рядках 5-8, 11-14, 17-19, 22 описуються атрибути елементівdate, time, text, commentвідповідно.
У рядку 18 вказується, що необхідний атрибутnumberмає тип ID. Це означає, що атрибутnumberмає бути унікальним, тобто не використовуватися тільки один раз.
У рядку 37: відсутній атрибут ss елементаtime. Це пов'язано з тим, щоssбув оголошений як атрибут типу IMPLIED.
Абсолютно по-іншому буде виглядати XML-документ, якщо специфікація в рядку 3 виглядатиме таким чином:
day CDATA #REQUIRED
month CDATA #REQUIRED
year CDATA #FIXED "2009">
hh CDATA #REQUIRED
mm CDATA #REQUIRED
ss CDATA #IMPLIED>
number ID #REQUIRED
from CDATA #REQUIRED>
txt IDREF #REQUIRED>
]>
Завтра відбудеться лекція з Web-дизану о 13.25
Терміново здати звіт. Завтра останній термін
Що важливіше: лекція або звіт?
Не забути конспект
.
А якщо вказати в рядку 3 специфікацію елемента note
,
то для правильності документа, рядки слід було б розмістити так:
day CDATA #REQUIRED
month CDATA #REQUIRED
year CDATA #FIXED "2009">
hh CDATA #REQUIRED
mm CDATA #REQUIREDss CDATA #IMPLIED>
number ID #REQUIRED
from CDATA #REQUIRED>
txt IDREF #REQUIRED>
]>
Завтра відбудеться лекція з Web-дизану о 13.25
Терміново здати звіт. Завтра останній термін
Що важливіше: лекція або звіт?
Не забути конспект
.
Проте, розглянутий в прикладі xml-код, суперечить структурі документа, оскільки порушений порядок проходження елементів. Це обумовлено тим, що кожне повідомлення має свій час виникнення і саме це необхідно вказати розробникові. Помилку можна було б виправити шляхом введення в елементі time атрибутаtxt.
Тепер всі елементи йдуть один за одним в тому порядку, який вказаний у специфікації елементаnote.