Ошибка проверки xmllint для атрибута ID - PullRequest
3 голосов
/ 12 февраля 2012

Я пытаюсь проверить этот документ XML:

<?xml version="1.0"?>
<CONTACTS>
    <CONTACT CONTACT_NUM = "1">
    <NAME>Alice</NAME>
    </CONTACT>

    <CONTACT CONTACT_NUM = "2">
    <NAME>Bob</NAME>
    </CONTACT>
</CONTACTS>

по следующему DTD:

<!ELEMENT CONTACTS ANY>
<!ELEMENT CONTACT (NAME)>
<!ELEMENT NAME (#PCDATA)>
<!ATTLIST CONTACT CONTACT_NUM ID #REQUIRED>

работает xmllint --dtdvalid test.dtd test.xml производит:

test.xml:3: element CONTACT: validity error : Syntax of value for attribute CONTACT_NUM of CONTACT is not valid
test.xml:7: element CONTACT: validity error : Syntax of value for attribute CONTACT_NUM of CONTACT is not valid
Document test.xml does not validate against test.dtd

Кто-нибудь заметит, что не так с синтаксисом атрибута CONTACT_NUM?

1 Ответ

2 голосов
/ 12 февраля 2012

Значение атрибута типа ID не может начинаться с цифры.Он должен соответствовать продукции Name в спецификации XML, которая исключает начальные цифры.Например,

<CONTACT CONTACT_NUM = "_1"> или <CONTACT CONTACT_NUM = "ID1"> будет в порядке.

Ссылки:

...