загрузка...
 
ВИКОРИСТАННЯ АТРИБУТІВ ТИПІВ ID І IDREF
Повернутись до змісту

ВИКОРИСТАННЯ АТРИБУТІВ ТИПІВ ID І IDREF

Наприклад, в житті часто виникає ситуація, коли людина протягом дня робить позначки в щоденнику. Кожному повідомленню присвоюється унікальний ідентифікатор 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.

1:

2:

3:

4:

5:

6:day   CDATA #REQUIRED

7:month CDATA #REQUIRED

8:year CDATA #FIXED "2009">

9:

10:

11:

12:txt IDREF #REQUIRED

13:hh CDATA #REQUIRED

14:mm CDATA #REQUIRED

15:ss CDATA #IMPLIED>

16:

17:

18:

19:number ID #REQUIRED

20:from   CDATA #REQUIRED>

21:

22:

23:

24:txt IDREF #REQUIRED>

25:

26:]>

27:

28:

29:

30:

31:Завтра відбудеться лекція з Web-дизану о 13.25

32:

33:

34:Терміново здати звіт

35:

36:

37:

38:

39:

40: 

41:Не забути конспект

42:

43:

44:

45:Що важливіше: лекція або звіт?

46:

47:.



загрузка...