我有一个简短的dtd文件,它有大约15个错误。我必须找到并描述它们。也许有人可以检查我的尝试并验证它们?非常感谢。
以下是代码:
<!ENTITY % note "(tip | warning | remark)">
//“|”
<!ENTITY % content "(#PCDATA | icon | menu | ref | iconbmp)*">
//“|”
<!ELEMENT topic (title, bar, procedure, bar?, %note;)>
//重复栏无效,%注意;应该在括号中
<!ATTLIST topic id ID #IMPLIED>
//应该是#REQUIRED而不是#IMPLIED?
<!ELEMENT title (#PCDATA)>
//正确
<!ATTLIST title keyword CDATA>
//没有属性行为的描述??
<!ELEMENT procedure (step+)>
//正确
<!ELEMENT step (action, (%note;)*>
//“*”
<!ELEMENT action %content;>
//%content;应该在括号中
<!ELEMENT tip %content;>
//%content;应该在括号中
<!ATTLIST tip for (amateur|expert) "amateur">
//正确
<!ELEMENT warning % note;>
//“%”和“note”之间的空间,%note;应该在括号中
<!ELEMENT remark %note;>
// wyrazenie%note;应该在括号中
<!ELEMENT icon (#PCDATA)>
//正确
<!ELEMENT menu (#PCDATA | shortcut)+>
//“|”
<!ELEMENT ref (#PCDATA)>
//正确
<!ATTLIST ref link idref #REQUIRED>
// ref和link应该颠倒过来?和#IMPLIED而不是#REQUIRED?
<!ELEMENT shortcut (#PCDATA)>
//正确
<!ELEMENT tip (#PCDATA)>
//正确
<!ELEMENT iconbmp EMPTY>
//正确
<!ATTLIST iconbmp src ENTITY #REQUIRED type NOTATION (bmp | gif | jpeg) "gif">
//“空间”之间的空间,bmp而不是gif?
答案 0 :(得分:0)
不必要的括号不是DTD中的错误。
空格不是DTD中的错误。许多读者发现它使声明更具可读性。
将括号放在参数实体替换文本中而不是将它们放在参数实体引用中并不是错误。
您认为是错误的一些属性是语义问题,而不是语法问题;它们可能是也可能不是错误,具体取决于DTD的实际要求。
在某些情况下,您认为错误的一些事实上是错误;大多数不是。而且你已经错过了&#39; menu&#39;的元素声明中的语法错误。