Значение атрибута " 001 " типа ID должно быть NCName, если включены пространства имен


Итак, я создаю xml-файл с моим собственным DTD.

Упрощенный XML выглядит следующим образом:

<!DOCTYPE catalog [
<!ELEMENT catalog (product+)>
<!ELEMENT product (title?, price, creation_date?, weight?, color, description?)>
<!ELEMENT creation_date (day, month, year)>

<!ATTLIST product category (art|dinner_set|ovenware) "art">
<!ATTLIST product id ID #REQUIRED>

<!ELEMENT id (#PCDATA)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT price (#PCDATA)>
<!ELEMENT day (#PCDATA)>
<!ELEMENT month (#PCDATA)>
<!ELEMENT year (#PCDATA)>
<!ELEMENT weight (#PCDATA)>
<!ELEMENT color (#PCDATA)>
<!ELEMENT description (#PCDATA)>
]>

<?xml-stylesheet type="text/xsl" href="test.xsl"?>
<catalog>
    <product category="art" id="001">
        <title>1Blue Sculpture</title>
        <price>$2000</price>
        <creation_date>
            <day>11</day>
            <month>08</month>
            <year>2014</year>
        </creation_date>
        <weight>257g</weight>
        <color>Green</color>
        <description>A beutiful Green Sculpture</description>
    </product>

Когда я пытаюсь запустить его через XML Validater, я получаю ошибку "значение атрибута" 001 " типа ID должно быть NCName, когда пространства имен включены.- для каждого из атрибутов идентификатора.

Я возился с ним некоторое время, и он, кажется, не допускает цифр, буквы прекрасны, и он проходит без каких-либо проблем, но как только вы устанавливаете id= " (любые числа)", он дает мне ошибка.

Im полный XML NOOB, поэтому я предполагаю, что это что-то простое, я искал вокруг, но не мог найти ничего определенного, что было легко сделать/undertsand.

1 2

1 ответ:

Да, проблема заключается в значении атрибута 001. Значения атрибутов типа ID должны соответствовать Name производству грамматики XML, что означает, что цифры (и некоторые другие символы) запрещены в качестве начальных символов.

Значения атрибутов, такие как x001 или id_001, в порядке.

Ссылки: