Это правильный способ сделать dtd? - PullRequest
0 голосов
/ 06 февраля 2020

если у меня есть 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. Могу ли я написать атрибуты внизу или как скоро это встретится?

спасибо, если кто-нибудь ответит и извините за мой английский sh.

Ответы [ 2 ]

0 голосов
/ 06 февраля 2020

Указанный c ответ на два ваших вопроса:

  1. Если у меня есть вложенный узел, я пишу его в начале или как только он встречается?
  2. Могу ли я написать атрибуты внизу или как только это встретится?

это то, что вы можете делать то, что вам нравится.

Лично я легче работать с DTD, который размещает объявления в алфавитном порядке. Но нет правильного или неправильного пути.

0 голосов
/ 06 февраля 2020

Оба случая работают после добавления нескольких пробелов:
Первый может быть:

<!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>

В обоих случаях Вы должны добавить пробел после имени элемента.
Результат одинаков в обоих случаях.
Это все, что вам нужно исправить / изменить.

...