Могу ли я объединить функции! ATTLIST в одной строке DTD? - PullRequest
0 голосов
/ 30 апреля 2011

Я только учусь писать XML и связанные DTD, и мне интересно, могу ли я объединить некоторые вещи в одной строке! ATTLIST.

Например:

У меня естьэлемент weight, и я хочу иметь (kg|lb) в качестве параметров, но установить "kg" в качестве значения по умолчанию.Ничто из этого не является обязательным, поэтому статус #IMPLIED, но я также хочу, чтобы вес по умолчанию был равен 1.

Можно ли по закону все это поместить в одну строку:

<!ELEMENT weight (#PCDATA)>
<!ATTLIST weight unit CDATA "1" (kg|lb) "kg" #IMPLIED>

Или я могу сделать это следующим образом:

<!ELEMENT weight (#PCDATA)>
<!ATTLIST weight unit CDATA>
<!ATTLIST weight unit "1" #IMPLIED>
<!ATTLIST weight unit (kg|lb)>
<!ATTLIST weight unit "kg" #IMPLIED>

Я подозреваю, что есть проблемы с обоими, и я немного запутался относительно того, как я комбинирую эти функции (или, если я даже могу) - такЯ был бы очень признателен за небольшое руководство по правильной работе.

1 Ответ

1 голос
/ 30 апреля 2011

Хорошо, у меня все получилось, выполнив следующее, хотя это может и не быть «принятой практикой»:

<!ELEMENT weight (#PCDATA)>
<!ATTLIST weight qty  CDATA "1">
<!ATTLIST weight unit CDATA (kg|lb) "kg">

Мне пришлось разбить значение на его собственный атрибут (что теперь имеет смысл, я думаю об этом) и удалить # ПРЕДПОЛАГАЕТСЯ, поскольку я где-то читал, что, установив значение по умолчанию, оно подразумевается в любом случае.

Надеюсь, это поможет кому-то еще (при условии, что это правильно)

Приветствия

...