Что такое инфо-набор XML и чем он отличается от документа XML?

Я пытался прочитать http://www.w3.org/TR/xml-infoset/ и запись в Википедии. Но, честно говоря, я до сих пор не уверен, в чем разница.

Цитата:

XML-документ имеет набор информации, если он правильно сформирован и удовлетворяет ограничениям пространства имен. Не требуется, чтобы документ XML был действительным, чтобы иметь набор информации.

Из википедии запись, похоже, не имеет смысла. Как недействительный документ может иметь какую-либо семантику и, таким образом, как он может быть "информационным" набором?

Что это за "инфосет"

хорошо сформирован и удовлетворяет ограниченному пространству имен

XML имеет? И чем это полезно само по себе. Другими словами, почему, с семантической точки зрения, необходимо определить инфо-набор XML? Есть ли какая-либо информация, которая не может быть представлена ​​в XML? Если так, то я вижу ограничивающий набор Инфо-набора XML, но если нет, то Инфо-набор XML так же бессмыслен, как термин "информация"?

Спасибо за интересные ответы: я до сих пор не могу понять, почему инфо-набор Xml имеет какое-либо назначение, а не термин инфо-набор. Но вы, ребята, дали мне прямой ответ на вопрос.

9 ответов

Решение

Полезный способ понять различие между текстом XML и информационным набором XML - рассмотреть быстрый информационный набор. Это двоичное представление информационного набора XML.

Итак, у вас есть абстрактный "набор информации", который представляет собой концептуальную модель, представляющую данные XML (узлы, элементы, атрибуты и т. Д.). Это может быть физически представлено в виде текстового XML-документа или в виде потока Fast Infoset. Оба представляют одни и те же данные, но в разной степени.

XML это не текст. XML "является" инфо-набором XML. Затем его можно сериализовать в текст в XML-документе, но реальностью является информационный набор XML.

Например, информационный набор может существовать в памяти как дерево DOM. Он существует в памяти как реализация абстрактной объектной модели.

Что, если я сериализовал его как UTF-8, а затем как UTF-16. Скорее всего, результатом будут два разных набора битов, но один и тот же набор.

Учтите также, что с текстом имеет смысл делать такие вещи, как конкатенация строк. Вы не хотите объединять "<" в середине элемента XML. Вы должны сначала закодировать это. Зачем вам это делать, если это был просто текст? Например, если вы используете DOM, вы просто скажете element.InnerText = "<"; При сериализации "<" будет закодировано в "& lt;". Все же это тот же самый инфосет.

Пожалуйста, смотрите эту ссылку из MSDN. http://msdn.microsoft.com/en-us/library/aa468561.aspx

Это действительно хорошее объяснение понятий и, надеюсь, даст вам понять.

Действительный документ XML соответствует требованиям DTD или XSD (или других стандартов). Если он правильно сформирован, он все еще может быть "недействительным", если он нарушает правила в данном DTD или XSD.

Редактировать: я новичок в этой области XML, но похоже, что информационный набор - это описание "абстрактного уровня" частей документа XML, не зависящее от фактической технической реализации - например, объектной модели документа. реализация.

Инфо-набор XML - это абстрактный набор понятий, таких как атрибуты и сущности, которые можно использовать для описания действительного документа XML. Согласно спецификации: "Информационный набор XML-документа состоит из нескольких информационных элементов; информационный набор для любого правильно сформированного XML-документа будет содержать по меньшей мере информационный элемент документа и несколько других".

Тот факт, что XML-документ является информационным набором, не означает, что он соответствует XSD и является действительным XML-документом.

XML - это язык, поэтому он имеет синтаксис, а XML Infoset имеет спецификацию модели данных, это связано с потребностями приложений, которые основаны на модели данных, а не на синтаксисе; XML предшествует XML Infoset; Ссылка: соображения протокола для доступа к Web Linkbase

Хороший пример, с которым я только что столкнулся, находится в PDF-файле WCF Дэвида Чаппелла. Вот как это работает при использовании TCP, например:

Чтобы обеспечить оптимальную производительность, когда обе стороны в коммуникации основаны на WCF, проводное кодирование, используемое в этом случае, является оптимизированной двоичной версией SOAP. Сообщения по-прежнему соответствуют структуре данных сообщения SOAP, называемого его Infoset, но в их кодировании используется двоичное представление этого Infoset, а не стандартный формат угловых скобок и текста XML. Использование этой опции имело бы смысл для связи с клиентским приложением центра обработки вызовов, поскольку оно также построено на WCF, а производительность является первостепенной задачей.

Набор информации XML - это набор определений для использования в других спецификациях, которые должны ссылаться на информацию в документе XML .

Цель XML Information Set- предоставить согласованный набор определений для использования в других спецификациях, которые должны ссылаться на информацию в правильно сформированном XML-документе .

Один из способов получить набор информации XML - это проанализировать XML-документ.

Информационный набор XML-документа состоит из ряда информационных элементов . Термины «набор информации» и «информационный элемент» аналогичны по значению общим терминам «дерево» и «узел».

Подробности можно найти в Информационном наборе XML .

XML Infoset - это требование о том, как вы должны структурировать сериализованный XML-документ.

Сериализованный XML может иметь различные формы, например, некоторый двоичный формат ( быстрый инфо-набор) или текстовый (наиболее популярная форма).

В основном для формата документа XML (текст) каждый элемент и атрибут должны быть определены в XSD через соответствующее пространство имен.

Здесь вы найдете пример.

Другие вопросы по тегам