是否可以在DTD文件中为两个具有相同值的属性声明一个元素? XML问题

时间:2019-01-06 07:02:04

标签: html xml dtd

也许您可以帮助我解决这个问题。我注意到xml中有一个名为“ order”的属性,其值为1和2。我的问题是,应在DTD文件上放置什么属性和值?我试图将值1和2都加2!ATTLIST,但是我的程序(氧气)只允许我输入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 :(得分:0)

您可以指定属性的可能值列表,如XML规范在3.3.1 Attribute Types章中所述:

  

[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之间进行选择。