Нужна помощь в понимании схемы DTD - PullRequest
0 голосов
/ 10 ноября 2009

Я совершенно новичок в XML, может кто-нибудь сказать мне, что именно должен делать этот код?

<?xml version="1.0" encoding="ISO-8859"?> 
<!DOCTYPE person [ 
    <!ELEMENT first_name(#PCDATA)>
    <!ELEMENT last_name(#PCDATA)>
    <!ELEMENT PROFESSION(#PCDATA)>
    <!ELEMENT name(first_name, last_name)>
    <!ELEMENT person (name, profession)>]> 
<person>
    <name>
        <last_name>Jack</last_name>
        <last_name>Jill</last_name> 
    </name>
</person>

Ответы [ 3 ]

8 голосов
/ 10 ноября 2009

Это файл XML, и он ничего не делает сам по себе. Вместо этого он, по-видимому, определяет «персона» с двумя фамилиями (но файл недействителен, поскольку DTD указывает как имя, так и фамилию).

4 голосов
/ 10 ноября 2009

Это встроенный DTD, который определяет, какие элементы разрешены и в каком порядке, например элемент "name" должен содержать first_name, за которым следует last_name.

Это нетрадиционный подход, но он должен быть действительным. Обычно DTD является внешним файлом, а не внедряется в исходный документ.

1 голос
/ 10 ноября 2009

Сначала документ xml указывает, что это документ xml с прологом (<?xml). Определяется необязательный DOCTYPE, в основном это просто список всех возможных элементов и атрибутов в документе, и, наконец, сам фактический документ определяется с person, являющимся корневым узлом, name, являющимся первым дочерним элементом, имеющим двух дочерних элементов. которые last_name узлы.

Я думаю, что первый узел под name должен быть first_name, а не last_name.

...