Что такое инфо-набор XML и чем он отличается от документа XML? - PullRequest
16 голосов
/ 08 мая 2009

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

Цитата:

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

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

Что это за "инфосет", который

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

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

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

Ответы [ 8 ]

18 голосов
/ 08 мая 2009

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

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

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

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

7 голосов
/ 01 октября 2009

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

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

2 голосов
/ 12 декабря 2010

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

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

2 голосов
/ 09 мая 2009

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

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

2 голосов
/ 08 мая 2009

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

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

0 голосов
/ 04 сентября 2017

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

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

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

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

0 голосов
/ 25 мая 2017

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

0 голосов
/ 01 октября 2009

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

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

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