[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'>
                             и так далее. 

Илия