这是制作dtd的正确方法吗?

Is this the right way to make a dtd?

如果我有这样的 xml 文件:

<books>
    <book>

        <title></title>
        <subtitle></subtitle>
        <info language="">

            <pages></pages>
            <chapters></chapters>

        </info>

        <author></author>

    </book>
    .
    .
    .
</books>

哪一个是正确的 dtd? 第一条路

    <!ELEMENT books(book+)>
    <!ELEMENT book(title,subtitle,info,author)>
    <!ELEMENT title (#PCDATA)>
    <!ELEMENT subtitle (#PCDATA)>
    <!ELEMENT info(pages,chapters)>
    <!ELEMENT pages (#PCDATA)>
    <!ELEMENT chapters(#PCDATA)>
    <!ELEMENT author(#PCDATA)>
    <!ATTLIST info language CDATA #REQUIRED>

第二种方式

   <!ELEMENT books(book+)>
   <!ELEMENT book(title,subtitle,info,author)>
   <!ELEMENT info(pages,chapters)>
   <!ELEMENT title (#PCDATA)>
   <!ELEMENT subtitle (#PCDATA)>
   <!ELEMENT pages (#PCDATA)>
   <!ELEMENT chapters(#PCDATA)>
   <!ELEMENT author(#PCDATA)>
   <!ATTLIST info language CDATA #REQUIRED>

所以我的问题是:

  1. 如果我有一个嵌套节点,我是在开始时写它还是在遇到它时立即写它?
  2. 我可以在底部或遇到它时写属性吗?

谢谢,如果有人会回复,对不起我的英语。

添加一些 spaces:
后,这两种情况都有效 第一个可以是:

<!DOCTYPE stylesheet [
    <!ELEMENT books (book+)>
    <!ELEMENT book (title,subtitle,info,author)>
    <!ELEMENT title (#PCDATA)>
    <!ELEMENT subtitle (#PCDATA)>
    <!ELEMENT info (pages,chapters)>
    <!ELEMENT pages (#PCDATA)>
    <!ELEMENT chapters (#PCDATA)>
    <!ELEMENT author (#PCDATA)>
    <!ATTLIST info language CDATA #REQUIRED>
]>
<books>
    <book>
        <title></title>
        <subtitle></subtitle>
        <info language="">
            <pages></pages>
            <chapters></chapters>
        </info>
        <author></author>
    </book>
    .
    .
    .
</books>

第二个可以是:

<!DOCTYPE stylesheet [
   <!ELEMENT books (book+)>
   <!ELEMENT book (title,subtitle,info,author)>
   <!ELEMENT info (pages,chapters)>
   <!ELEMENT title (#PCDATA)>
   <!ELEMENT subtitle (#PCDATA)>
   <!ELEMENT pages (#PCDATA)>
   <!ELEMENT chapters (#PCDATA)>
   <!ELEMENT author (#PCDATA)>
   <!ATTLIST info language CDATA #REQUIRED>
]>
<books>
    <book>
        <title></title>
        <subtitle></subtitle>
        <info language="">
            <pages></pages>
            <chapters></chapters>
        </info>
        <author></author>
    </book>
    .
    .
    .
</books>

在这两种情况下,您都必须在元素名称后添加 space。
两种情况的结果是一样的。
这就是您需要 fix/change.

的全部内容

你两个问题的具体答案:

  1. If i have a nested node do i write it at the start or as soon is encounter it?
  2. Can i write attributes at the bottom or as soon is encounter it?

就是可以随心所欲

就个人而言,我发现使用按字母顺序放置声明的 DTD 更容易。但是没有对错之分。