Проблема с xml - PullRequest
       35

Проблема с xml

1 голос
/ 28 августа 2011

Я новичок в XML ... Я только начал изучать XML .... У меня есть следующие сомнения .. Вот мой код xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE book [
<!ELEMENT book (page)>
<!ELEMENT page (heading,#PCDATA)>

 ]>
<note>
<page>
    hhh<heading>c</heading><heading>s</heading>
</page>
</note>

Когда я открыл это в браузере, это показало, что есть ошибка с #PCDATA ... когда я заменил его на PCDATA, это не показало ошибку ... Согласно моему DTD, страница может содержать ровно один элемент заголовка .. Я прав? Но когда я открыл его в браузере, он не показывал ошибки, даже если у меня есть два элемента заголовка. Почему это произошло? Кроме того, в чем разница между CDATA и PCDATA ....

Ответы [ 2 ]

4 голосов
/ 28 августа 2011

Мой совет - подобрать надежный парсер проверки, например, AltovaXML (Community Edition) очень прост в использовании:

altovaxml -validate document.xml

Давайте посмотрим, что не так с вашим DTD.Прежде всего, ваш элемент документа (корневой) не называется book, поэтому мы получили первую ошибку здесь:

Ошибка в ссылочной схеме или DTD.Элемент не соответствует имени корневого элемента 'book' из DTD.

Во-вторых, heading не объявлено:

Элемент не был объявлен.

Наконец, чтобы разрешить смешанный контент поставить выбор с #PCDATA (что означает анализируемые символьные данные) сначала и heading элемент:

Наконец, ваш DTD:

<!DOCTYPE note [
    <!ELEMENT note (page)>
    <!ELEMENT page (#PCDATA | heading)*>
    <!ELEMENT heading (#PCDATA)>
]>
4 голосов
/ 28 августа 2011

Используйте это:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE note [
  <!ELEMENT note (page)>
  <!ELEMENT page (#PCDATA|heading)*>
  <!ELEMENT heading (#PCDATA)>

]>
<note>
  <page>
    hhh<heading>c</heading><heading>s</heading>
  </page>
</note>

PCDATA - это текст, который будет проанализирован анализатором. Текст будет проверено синтаксическим анализатором на сущности и разметку.

CDATA - это текст, который НЕ будет анализироваться парсером. Теги внутри текст НЕ будет обрабатываться как разметка, а объекты не будут расширяться.

...