• 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.
John Doe
Jane Doe
Обратите внимание, что страница стиля связана с XML-документом. С помощью .NET-классов для XML или MSXML-анализатора Visual Basic можно динамически изменять результаты с представлением их в нескольких разных форматах (например, WML).
Строка select="People/Person" — это XPATH-запрос, который представляет собой эквивалент SQL-команды SELECT People FROM Person. Для циклического обхода всех элементов применяется команда xsl:for-each из спецификации XSL. В отличие от XML, в котором нет программных директив, в XSL предусмотрен целый набор директив, который может быть расширен благодаря сценариям для предоставления дополнительной функциональности.
XML и доступ к данным
Обладая этими базовыми знаниями об XML и зная способы их использования, можно применить их в реальных приложениях для работы с данными. XML-анализатор способен считать данные в формате XML, и они будут иметь одинаковый смысл в любом приложении. Эта гибкость сокращает необходимый для работы с данными код, улучшает сопровождение и поддержку программ.
Когда создатели платформы .NET планировали следующую версию интегрированной среды разработки, такая гибкость была одним из основных требований. Теперь практически все элементы платформы .NET используют XML для обмена информацией. Среда CLR использует XML-файлы для указания параметров приложения. Объекты DataSet возвращаются как XML-документы, которые могут записываться в виде строки или документа. XML Web-службы удовлетворяют открытому стандарту SOAP, который в конечном итоге означает, что код объекта для платформы Windows может быть расширен для использования на любой другой платформе, которая поддерживает HTTP- или SOAP-запросы.
XML не предлагает никаких новых революционных способов изменения способов доступа к данным, а лишь иначе использует известные способы сбора и сохранения данных. Более подробная информация о применении компонентов XML с моделью ADO.NET предлагается в главе 10, "ADO.NET и XML".
Классы XML на платформе .NET