2015-04-18 3 views
0

Я попытался проверки этого DTD с помощью 1-2 валидаторов, но я не уверен, почему он не действует:Почему этот DTD недействителен?

DTD код:

Любая помощь будет оценен по достоинству!

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE cars 
[ 
    <!ELEMENT car (maker, model, year, colour, engine, number_of_doors, accessories)> 

    <!ELEMENT maker (#PCDATA)> 
    <!ELEMENT model (#PCDATA)> 
    <!ELEMENT year (#PCDATA)> 
    <!ELEMENT colour (#PCDATA)> 
    <!ELEMENT engine (number_of_cylinders)> 
    <!ELEMENT number_of_doors (#PCDATA)> 
    <!ELEMENT accessories (#PCDATA)> 

    <!ELEMENT number_of_cylinders (#PCDATA)> 

    <!ATTLIST accessories radio (yes|no) #REQUIRED 
     air_conditioning (yes|no) #REQUIRED 
     power_windows (yes|no) #REQUIRED 
     power_steering (yes|no) #REQUIRED 
     power_brakes (yes|no) #REQUIRED 
    > 
]> 
+1

Покажите свой входной XML и скажите нам, что сообщения об ошибках дали валидаторы. – jasso

ответ

0

Чтобы сделать XML документ с внутренним DTD подмножеством быть действительным, внести следующие изменения:

  1. Изменить элемент документа из cars в car.
  2. Создайте XML, связанный с данным внутренним подмножеством.

    <?xml version="1.0" encoding="UTF-8"?> 
    <!DOCTYPE car 
    [ 
    <!ELEMENT car (maker, model, year, colour, engine, number_of_doors, accessories)> 
    
    <!ELEMENT maker (#PCDATA)> 
    <!ELEMENT model (#PCDATA)> 
    <!ELEMENT year (#PCDATA)> 
    <!ELEMENT colour (#PCDATA)> 
    <!ELEMENT engine (number_of_cylinders)> 
    <!ELEMENT number_of_doors (#PCDATA)> 
    <!ELEMENT accessories (#PCDATA)> 
    
    <!ELEMENT number_of_cylinders (#PCDATA)> 
    
    <!ATTLIST accessories radio (yes|no) #REQUIRED 
        air_conditioning (yes|no) #REQUIRED 
        power_windows (yes|no) #REQUIRED 
        power_steering (yes|no) #REQUIRED 
        power_brakes (yes|no) #REQUIRED> 
    ]> 
    <car> 
        <!-- Finish building out the XML per the internal subset. --> 
    </car> 
    
Смежные вопросы