Опубликован: 14.11.2006 | Уровень: для всех | Доступ: платный
Лекция 10:

Работа с XML

< Лекция 9 || Лекция 10: 123456 || Лекция 11 >
Аннотация: Краткая аннотация: XML как универсальный язык данных. Чтение и запись в XML. Файлы преобразования и схемы документа. Элементы управления, отображающие XML-данные.

"Язык — не сын, а отец мысли."

Оскар Уайльд

Аббревиатура XML расшифровывается как Extensible Markup Language, в переводе "расширяемый язык разметки". Как и язык HTML, он является подмножеством SGML (Standard General Markup Language) — "дедушки" языков разметки. Мы уже не раз сталкивались с форматом XML: таков формат конфигурационных файлов или файла описания объектных источников данных.

XML — это универсальный, независящий от платформы стандарт описания информации, который можно использовать для представления иерархических данных и унификации передаваемой информации. Без его знания невозможно понимание SOAP и, следовательно, web-сервисов. XML стал де-факто стандартом передачи данных в сети Интернет. Стандарт XML и связанных с ним форматов определяется консорциумом W3C (World Wide Web Consortium). Например, мы создаем aspx-страницы в формате xHTML — переходном между HTML и XML, стандарт которого тоже определен W3C. Стандарт xHTML налагает более строгие правила на правильное формирование документа, аналогичные правилам XML.

Давайте поймем главное отличие XML от HTML. XML создан для описания данных и фокусируется на том, что именно они из себя представляют. HTML создан для демонстрации данных и фокусируется на том, как данные выглядят. Если в традиционном HTML понятия "представление" и "визуализация" часто смешиваются, то при работе с XML мы четко разделяем эти понятия. Теги XML не предопределены создателями языка, в отличие от тегов HTML. Каждый автор документа сам определяет собственные теги.

Стандарт требует, чтобы программа, которая обрабатывает XML-документ, останавливала работу, когда обнаружит ошибку. А если браузер обнаружит непонятный тег в HTML или отсутствие закрывающего тега, он это просто игнорирует.

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

<?xml version="1.0" encoding="utf-8" ?>

Декларация не является частью XML-документа и не имеет закрывающего тега. В тексте XML-файла могут находиться комментарии в стиле HTML<!--text -->.

XML-документ может иметь только один корневой элемент. В него могут быть вложены другие узлы, а в них, в свою очередь, — другие. Каждому открывающему тегу XML должен соответствовать закрывающий тег. После завершающего тега корневого элемента не может быть других тегов. Теги XML чувствительны к регистру (case-sensitive). Теги должны быть целиком вложены друг в друга. поэтому код, допустимый в HTML

<b><i>Какой-то текст</b></i>

является ошибкой в XML.

У тегов могут быть атрибуты. Значения атрибутов должны быть заключены в кавычки. Порядок атрибутов значения не имеет. Между открывающим и закрывающим тегами может находиться текст. В XML сохраняются все пробелы, находящиеся в тексте. Если текста нет, можно применить сокращенную форму записи. Пример тега XML:

<PROPERTY Label="ogl_extension" Value="4520" Itemtype="predefined" 
/>

Это краткая форма тега

<PROPERTY Label="ogl_extension" Value="4520" Itemtype="predefined"></PROPERTY>

Вам это ничего не напоминает? Правила описания элементов ASP .NET точно такие же.

Существует атрибут xmlns, который определяет пространство имен. Значением его может быть любое уникальное имя. Существует договоренность использовать URL, так как они уникальны. Пространства имен имеют смысл, аналогичный их применению в .NET Framework — чтобы не смешивать одинаковые имена, используемые разными разработчиками. Название пространства имен отделяется от имени двоеточием.

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

Документы XML, удовлетворяющие всем требованиям синтаксиса, называют правильными (well-formed). Для описания данных XML использует DTD (Document Type Definition) — определение типа документа. Если файл соответствует DTD, он считается действительным (valid).

Браузеры IE 6.0, FireFox 1.5 отображают XML-файлы с выделением синтаксиса. Родительские узлы можно раскрывать и закрывать. Например, в закрытом виде корневой узел файла BirthDay.xml выглядит так:

+ <BD>

Если его раскрыть, увидим

-  <BD>
- <Item Type="Plugin">
  <LinkText>Отправить поздравительную открытку</LinkText> 
  <PluginID>Friendship</PluginID> 
  <InitData /> 
  </Item>
- <Item Type="URL">
  <AdditionalText>Отправить поздравительную открыт-
ку</AdditionalText> 
  <URL>www.icq.com</URL> 
 	 </Item>
  </BD>

Среды разработки Visual Studio и VWD Express проверяют правильность XML-документов прямо во время редактирования.

< Лекция 9 || Лекция 10: 123456 || Лекция 11 >
Алексей Савельев
Алексей Савельев

https://technet.microsoft.com/en-us/library/ms143221(v=sql.105).aspx

Денис Прокофьев
Денис Прокофьев

Везде написано, что это самый независимый и простой в использовании навигационный элемент управления, что он работает сразу с web.sitemap и не требует определения SiteMapDataSource.

Моя карта сайта состоит из двух страниц, вложенных друг в друга. asp:Menu, asp:TreeView отбображаются как ожидалось, а вот asp:SiteMapPath - нет. Он не виден нигде. Однако на его месте формируется разметка: <span id="SiteMapPath1"><a href="#SiteMapPath1_SkipLink" style="position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden;">Проход по ссылкам навигации</a><a id="SiteMapPath1_SkipLink"></a></span> - т.е. элемент отрабатывает.

В словах xHTML это выглядит так: <asp:SiteMapPath ID="SiteMapPath1" runat="server" />. Причем не важно - внутри тега form или снаружи - всегда одинаково.

Т.к. другие нав. ЭУ работают через простой источник данных без ошибок, делаю вывод - карта составлена правильно. ИД: <asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" />

Карта: <?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
  <siteMapNode url="~/L11_1_simplePage.aspx" title="Страница 1"  description="Простая страница 1." >
    <siteMapNode url="~/L11_1SimplePage2.aspx" title="Страница 2"  description="Простая страница 2" />
  </siteMapNode>
</siteMap>

Почему так происходит? Вроде делаю все по примерам. VS Community 2015. NetFramework в проекте: v4.0.30319

Зарина Каримова
Зарина Каримова
Казахстан, Алматы, Гимназия им. Ахмета Байтурсынова №139, 2008
Akiyev Begench
Akiyev Begench
Беларусь, Полоцк, полоцкий государственный университет