[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: attlist problems
On 15 Feb 1998, Andrey V Khavryutchenko wrote:
> Hi!
>
> Тут такая проблемма возникла. Сочиняю я dtd для документации по
> софтверным проектам. Но nsgmls не позволяет в attlist поставить два
> аттрибута с одинаковыми возможными значениями:
>
> <!doctype uml [
>
> <!element method - O (#PCDATA)>
> <!attlist method
> isTypeScope (true|false) "false"
> isPolymorphic (true|false) "true"
> >
>
> <!element uml - - (method)>
>
> ]>
> <uml>
> <method>
> </>
> </>
>
> $ nsgmls -s -m /home/akhavr/lib/dtd/catalog tst.sgml
> nsgmls:tst.sgml:6:26:E: token "TRUE" occurs more than once in attribute definition list
> nsgmls:tst.sgml:6:26:E: token "FALSE" occurs more than once in attribute definition list
>
> Если так и должно быть, то интересны причины. Если нет -- интересно
> как исправить.
>
В замечательной книжке B.Travis и D.Waldt "The SGML Implementation Guide"
этой проблеме посвящен раздельчик в главе "Tipniques and Pratfalls".
Там указывается на то, что так как атрибуты в таге могут перечисляться в
любом порядке, а также, тк можно опускать имена аттрибутов, то дублирование
токенов (типа yes и no) недопустимо. (Как Борис Тоботрас и написал).
Скорее всего такое правило отменить нельзя, цитирую:"SGML *enforces* a
rule that prohibits the use of the same name token in more than one group
in an attribute definition list."
Но Travis и Waldt предлагают imho великолепное решение такой проблемы, а
именно:
<!ATTLIST appendix tocentry (tocentry | notocentry) 'tocentry'
verified (verified | noverified) 'noverified'>
и так далее.
Илия