Семантика XML интересна тем, что на элемент можно ссылаться как на узел и наоборот. В некоторых публикациях элемент также называют дескриптором. Во избежание путаницы здесь и далее используются только термины "элемент" и"узел".
Элементы не только могут иметь атрибуты, но и подчиненные элементы; аналогично, подчиненные элементы могут иметь свои собственные атрибуты, как показано в листинге 9.1.
Листинг 9.1. Пример элемента Person с подчиненными элементами<Person firstName="John">
lastName = "Doe"
address1 = "123 Main Street"
address2 = ""
city = "Sometown"
state = "ОН"
zip = "22222"
phone = "111-242=5512"
<orders>
<order id="111" itemid="2932" itemdesc="Super Foo Widget"></order>
</orders>
</Person>
Как видите, элемент Person здесь нужно закрыть явно, потому что изменился диапазон контейнера, т.е. теперь он содержит сведения о заказах orders. Приведенный в листинге 9.1 код является нейтральным, т.е. не содержит никакой информации о приложении, только данные и метаданные.
НА ЗАМЕТКУЯзыку XML посвящено множество материалов, опубликованных в печатных изданиях и в Internet. Прекрасное введение в XML можно найти по адресу: http://www/w3.org/XML/1999/XML-in-10-points.html. Вот несколько других адресов Web-узлов, которые содержат наиболее полные сведения по этой теме:
• Web-узел консорциума World Wide Web Consortium http://www/w3.org) содержит официальные и хорошо документированные спецификации XML;
• Web-узел компании Microsoft (http://msdn.microsoft.com) содержит постоянно обновляемые ресурсы, которые охватывают все вопросы использования XML и родственных технологий с программными продуктами Microsoft;
• Web-узел компании TopXML/VBXML.com (http://www.vbxml.com) предлагает разные ресурсы и примеры кодов для работы с технологией XML.
Семейство технологий XML
Язык XML не одинок и сосуществует с несколькими другими родственными технологиями.
• XML Path Language (XPATH) предлагает способ извлечения информации из XML-документа. Хотя синтаксис XPATH радикально отличается от синтаксиса XML, он работает аналогично SQL-запросам.
• Extensible StyleSheet Language Transformations (XSLT) предлагает способ преобразования (т.е. вставки, удаления или изменения) данных XML-документа в данные, которые могут использоваться в другом XML-документе. XSLT может использовать технологию XPATH для извлечения преобразуемых данных.
• Extensible StyleSheet Language (XSL) — это XSLT плюс объекты, которые позволяют разработчику описывать способ отображения информации в броузере или другом XSL-совместимом приложении.
• Document Object Model (DOM) содержит стандартный набор функций, которые позволяют программными средствами извлекать данные из XML- или HTML-документа.
• Simple Object Access Protocol (SOAP) – это спецификация вызовов Web-служб или других Web-ориентированных приложений и служб, а также форматирования отклика. Более подробно SOAP рассматривается в главе 12, "Web-службы и технологии промежуточного уровня".
РИС. 9.1. Иерархия технологий XML, XSL, XSLT u XPATH
На рис. 9.1 показана взаимосвязь между технологиями XML, XSL, XSLT и XPATH в приложении на основе XML. (Более подробно такие приложения рассматриваются далее, в разделе о классах XML на платформе .NET.) Обратите внимание, что XML-документ является источником данных, т.е. содержит отображаемые в приложении данные. XPATH-запрос элементов People/Person используется для сбора сведений обо всех элементах Person из XML-документа. XSL-стиль окружает данные элементами с указанием шрифта с помощью XSL-страницы стиля. После анализа и обработки полученный результат возвращается в формате HTML.
ВНИМАНИЕ!Учтите, что XML имеет очень строгие правила, причем все имена нужно приводить с учетом регистра символов.
Для демонстрации этой взаимосвязи вставьте код из листингов 9.2 и 9.3 в файлы simple.xml и simple.xsl, которые располагаются в одном каталоге. Откройте файл simple.xml в Web-броузере Internet Explorer версии 6.0 или выше. Результат выполнения этих действий будет иметь вид, представленный на рис. 9.1.
ЛИСТИНГ 9.2. Файл simple.xml<?xml version='1.0'?>
<?xmclass="underline" stylesheet type="text/xsl" href="simple.xsl"?>
<People>
<Person>
John Doe
</Person>
<Person>
Jane Doe
</Person>
</People>
Обратите внимание, что страница стиля связана с XML-документом. С помощью .NET-классов для XML или MSXML-анализатора Visual Basic можно динамически изменять результаты с представлением их в нескольких разных форматах (например, WML).
ЛИСТИНГ 9.3. Файл simple.xsl<?xml version="1.0"?>
<HTML xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsclass="underline" for-each select="People/Person">
<font face="Arial">