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

Xml 这是制作dtd的正确方法吗?,xml,dtd,Xml,Dtd,如果我有这样一个xml文件: <books> <book> <title></title> <subtitle></subtitle> <info language=""> <pages></pages> <chapters></chapters>

如果我有这样一个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>

因此,我的问题是:

  • 如果我有一个嵌套节点,我是在开始时还是在遇到它时立即写入它
  • 我可以在底部写属性吗,还是在遇到属性后立即写属性

  • thanx如果有人会回复,并为我的英语道歉。

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

    <!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>
    
    
    ]>
    .
    .
    .
    
    第二个可以是:

    <!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>
    
    
    ]>
    .
    .
    .
    
    在这两种情况下,都必须在元素名称后添加空格。
    两种情况下的结果相同。

    这就是您需要修复/更改的全部内容。

    您的两个问题的具体答案:

  • 如果我有一个嵌套的节点,我是在开始时写还是尽快写 遇到它
  • 我可以在底部写属性还是尽快写属性 遇到它
  • 你可以做你喜欢做的事

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