Можно ли объявить элемент в файле DTD для двух атрибутов с одинаковым значением? Вопрос XML - PullRequest
0 голосов
/ 06 января 2019

Может быть, вы можете помочь мне с этой проблемой. Я заметил, что в xml есть атрибут с именем "order" со значениями 1 и 2. Мой вопрос: какой атрибут и значение я должен указать в моем файле DTD? Я попытался добавить 2! ATTLIST с обоими значениями 1 и 2, но моя программа (Oxygen) позволяет мне только поставить 1. Я провел некоторое исследование по этому поводу и не смог найти никакой полезной информации. Если кто-нибудь может помочь мне с этим, я буду признателен за это.

XML-файл:

<steps>
<step order="1">
Mix all ingredients except oil.  Shape mixture into 4 patties, each about 3 1/2 inches in diameter.  Cover and refrigerate about 1 1/2 hours or until firm.</step>
<step order="2">
Heat oil (1 inch) in deep fryer or 10-inch skillet to 375.  Fry patties in oil 4 to 5 minutes, turning once, until golden brown on both sides.  Drain on paper towels.</step>
</steps>

DTD Файл:

<!ELEMENT step (#PCDATA)>
<!ATTLIST step order CDATA "1">

1 Ответ

0 голосов
/ 07 января 2019

Вы можете указать список возможных значений для атрибута, как определено в спецификации XML в главе 3.3.1 Типы атрибутов :

[54] AttType :: = StringType | TokenizedType | EnumeratedType

[57] EnumeratedType :: = NotationType | Перечисление

[59] Перечисление :: = '(' S? Nmtoken (S? '|' S? Nmtoken) * S? ')'

В вашем случае вы можете написать DTD следующим образом:

<!ELEMENT steps (step+)>
<!ELEMENT step (#PCDATA)>
<!ATTLIST step order (1|2) #IMPLIED >

Таким образом, единственными возможными значениями для этого атрибута являются «1» или «2». В зависимости от того, требуется ли атрибут, вы можете выбрать между #IMPLIED и #REQUIRED.

...