Почему моя схема недействительна? Объявления разметки, содержащиеся или на которые указывает объявление типа документа, должны быть правильно сформированы. - PullRequest
0 голосов
/ 03 мая 2018

Это мой XML:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE system SYSTEM "system.dtd">

<system>
<items>
    <item id="1">item1</item>
</items>
<stores>
    <store id="2">
        <name>name1</name>
        <type>normal</type>
        <capacity>5</capacity>
    </store>
</stores>
<area>
    <slot id="4" name="name3" parallel="true">
        <input id="3" name="name2">
            <item></item>
        </input>
        <machine>
            <cost></cost>
            <time></time>
        </machine>
    </slot>
</area>
</system>

А это мой DTD для XML:

<!ELEMENT system (items?,stores?,area*)>
<!ELEMENT items (item*)>
<!ELEMENT item (#PCDATA)>
<!ATTLIST item id ID #REQUIRED>
<!ELEMENT stores (store*)>
<!Element store (name,type,capacity)> // Error appears here
<!Element name (#PCDATA)>
<!Element type (#PCDATA)>
<!Element capacity (#PCDATA)>
<!ATTLIST store id ID #REQUIRED>
<!ELEMENT area (slot*)>
<!ELEMENT slot (input*,output*,(slot | ref | conveyor | generator | machine | turntable)*>
<!ELEMENT input (item+)> 
<!ELEMENT output (item+)>
<!ELEMENT item (#PCDATA)>
<!ATTLIST input id ID #REQUIRED>
<!ATTLIST input name CDATA #IMPLIED>
<!ATTLIST output id ID #REQUIRED>
<!ATTLIST output name CDATA #IMPLIED>
<!ELEMENT ref (#PCDATA)>
<!ATTLIST ref id ID #IMPLIED>
<!ELEMENT conveyor (cost*,time*)>
<!ELEMENT generator (cost*,time*)>
<!ELEMENT machine (cost*,time*)>
<!ELEMENT turntable (cost*,time*)>
<!ELEMENT cost (#PCDATA)>
<!ELEMENT time (#PCDATA)>
<!ATTLIST slot id ID #REQUIRED>
<!ATTLIST slot name CDATA #REQUIRED>
<!ATTLIST slot parallel CDATA #IMPLIED>

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

1 Ответ

0 голосов
/ 03 мая 2018

Это не большая диагностика, не так ли?

В вашем DTD есть две ошибки: (a) ELEMENT должен быть в верхнем регистре, (b) в объявлении ELEMENT slot.

пропущен ')'.
...