Текст документа в XML - PullRequest
       0

Текст документа в XML

1 голос
/ 03 апреля 2011

Я понимаю разницу между XML и HTML, но один конкретный аспект мне неясен.XML обычно описывается как язык, который описывает данные, а также язык разметки документов.Из-за первого определения XML часто сравнивают с другими форматами описания данных, такими как JSON.Из-за последнего определения XML также часто сравнивают с другими языками разметки документов, такими как HTML.

Я понимаю, что XML может функционировать как оба, но если XML должен служить в качествеЯзык разметки документа, может ли текст документа появляться между закрывающими тегами, так же, как и в HTML?

Взять следующий HTML:

<div>
   Some text, and some <b>more</b> text.
</div>

Игнорирование начальной декларации XMLтакже действительный XML?Обратите внимание, что фрагмент text. не заключен в какие-либо теги: он появляется между двумя закрывающими тегами.Это, конечно, необходимо в языке разметки, таком как HTML, где целью является форматирование текста.Но большинство примеров XML, которые я вижу, используют его для описания данных , например:

<book>
  <title>Blah blah</title>
  <author>Blah blah</author>
</book>

В приведенном выше примере текст никогда не появляется между закрывающими тегами.

Итак, разрешено ли отображать текст (содержимое) между закрывающими тегами в XML?

Ответы [ 4 ]

2 голосов
/ 03 апреля 2011

Да.Это называется «смешанный контент»

Вы правильно отметили это как одно из требований к формату документа, а не к формату данных.JSON, вероятно, лучше в качестве формата данных, чем XML, но, поскольку он не допускает смешанного содержимого, он не может заменить XML в качестве формата документа.

0 голосов
/ 03 апреля 2011

Игнорируя начальную декларацию XML, является ли приведенный выше также допустимым XML?

Да, он все еще заключен в тег div.

Полезное объяснениеэто можно найти в W3Schools .

Текст всегда хранится в текстовых узлах.Распространенной ошибкой в ​​обработке DOM является переход к узлу элемента и ожидание, что он будет содержать текст.Тем не менее, даже самый простой элемент узла имеет текстовый узел под ним.Например, в 2005 году есть узел элемента (год) и текстовый узел под ним, который содержит текст (2005)

Итак, в вашем примере текстовый узелдля text. под элементом div.

0 голосов
/ 03 апреля 2011

Согласно «Элизабет Кастро» «XML для всемирной паутины» (2001) ответ да со специальным тегом CDATA

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

<element>
    <![CDATA[
<div>
Some text, and some <b>more</b> text.
</div>
]]>
</element>

<![CDATA[ останавливает синтаксический анализ текста до тех пор, пока не достигнет закрытия ]]>

0 голосов
/ 03 апреля 2011

Это действительный XML:

<div>
   Some text, and some <b>more</b> text.
</div>

text. в конце - все еще , заключенный в элемент div.

Структура:

 Some text, and some  - Text node within div
 <b>more</b>          - b element within div (with own text node)
  text.               - Text node within div

Это все родственные узлы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...