Почему внешний DTD не проверяется в XML-файле? - PullRequest
0 голосов
/ 26 марта 2019

Мне нужно было внешнее DTD для проверки с помощью XML-файла, и «выбор» «телефоны» и «телефон» продолжают появляться с ошибкой. Я знаю, что это связано с моим порядком элементов, но я не могу понять это.

Я редактировал. элементы телефона и телефонов, я считаю, что это проверяет сейчас

ОТД

     [
        <!ELEMENT smartphones (choices+)>

        <!ELEMENT choices (phones,phone,name,company,price,storage,description)>
        <!ATTLIST choices phones NMTOKENS #REQUIRED>

    <!ELEMENT phones (phone)>
    <!ATTLIST phones CDATA #REQUIRED>

    <!ELEMENT phone (name,company,price,storage,description)>
    <!ATTLIST phone NMTOKENS #REQUIRED>

        <!ELEMENT name (#PCDATA)>

        <!ELEMENT company (#PCDATA)>

        <!ELEMENT price (#PCDATA)>

        <!ELEMENT storage (#PCDATA)>

        <!ELEMENT description (#PCDATA)>

        ]>

<!-- XML -->
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>

<!DOCTYPE smartphones SYSTEM "Vocab1DTD.dtd">

<smartphones>

<choices>Smart Phones

   <phones>
      <phone>
         <name> </name>
         <company> </company>
         <price> </price>
         <storage> </storage>
         <description> </description>
      </phone>

  </phones>
</choices>
</smartphones>

1 Ответ

0 голосов
/ 26 марта 2019

Вот обновленное DTD, которое работает с вашим XML как есть.

Небольшой комментарий об XML: не имеет большого смысла иметь «Смартфоны» в виде текста в choices;это может быть заключено в том, что choices является ребенком smartphones.Кроме того, choices и phones кажутся избыточными;Какова цель наличия обоих?

Сообщите мне, если у вас есть вопросы об изменениях, которые я сделал.

Vocab1DTD.dtd

<!ELEMENT smartphones (choices+)>
<!ELEMENT choices (#PCDATA|phones)*>
<!ELEMENT phones (phone+)>
<!ELEMENT phone (name,company,price,storage,description)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT price (#PCDATA)>
<!ELEMENT storage (#PCDATA)>
<!ELEMENT description (#PCDATA)>
...