|
Программирование >> Программирование с использованием ajax
вы попытаетесь добавить этот префикс к элементу <books>, то XML станет неправильным, поскольку префикс для этого элемента не определен. Можно также определить пространство имен по умолчанию для элемента, используя атрибут xmlns: <?xml version= l.0 ?> <books> <book xmlns= http: www.wrox.com > <title>Beginning Visual C# </title> <author>Karli Watson </author> <html:img src=/img-2/ begvcsharp.gif xmlns:html= http: www.w3.org/1999/xhtml /> </book> </books> Здесь пространство имен по умолчанию для элемента <Ьоок> определено как http: www.wrox.com . Поэтому все, что находится внутри этого элемента, будет относиться к этому пространству имен, если только вы явно не специфицируете противоположное, добавив префикс другого пространства имен, как делаете это для элемента <img> (когда вы устанавливаете пространство имен, используемое XML-совместимыми документами HTML). Правильно оформленный и действительный XML До сих пор мы говорили о правильном (legal) XML. Фактически XML делает различие между двумя формами правильности. Документы, соответствующие всем правилам стандарта XML, считаются правильно оформленными (well-formed). Если документ XML не является правильно оформленным, то анализаторы не смогут интерпретировать его корректно, и отклонят такой документ. Чтобы быть правильно оформленным, документ может отвечать перечисленным ниже требованиям. □ Иметь один, и только один корневой элемент. □ Иметь закрывающие дескрипторы для каждого элемента (за исключением сокращенного синтаксиса, упомянутого ранее). а Не иметь перекрывающихся элементов - все дочерние элементы должны быть полностью помещены внутри родителя. □ Иметь все атрибуты, заключенные в скобки. Это не полный список требований, но он высвечивает наиболее распространенные ошибки, допускаемые программистами - новичками в XML. Однако документы XML могут соответствовать всем этим правилам и, тем не менее, не быть действительными (valid). Вспомните, что ранее мы упоминали, что XML сам по себе не является языком, а скорее стандартом для определения приложений XML. Правильно оформленные документы XML просто соответствуют стандарту XML; чтобы быть действительными, они также должны отвечать всем правилам, специфицированным для приложений XML. Не все анализаторы проверяют действительность документов; те, что делают это, называются проверяющими анализаторами. Чтобы проверить, соответствует ли документ правилам приложения, сначала нужен способ определения этих правил. Проверка действительности документов XML XML поддерживает два пути определения того, какие элементы и атрибуты могут быть помещены в документ, и в каком порядке: определения типов документов (Document Туре Definitions - DTD) и схемы. DTD используют отличный от XML синтаксис, унас- ледованный от родителя XML, и постепенно заменяются схемами. DTD не позволяют специфицировать типы данных элементов и атрибуты, а потому относительно не гибкие и не особенно широко используются в контексте .NET Framework. В противоположность этому, схемы используются часто; они позволяют специфицировать типы данных, и написаны в XML-совместимом синтаксисе. К сожалению, схемы очень сложны, и существуют разные формы для их определения, даже внутри мира .NET! Схемы Существуют два формата схем, поддерживаемых .NET - язык определения схем XML (XML Schema Definition - XSD) и сокращенные схемы XML-данных (XML-Data Reduced - XDR). Определение схем XDR- более старый стандарт, который принадлежит Microsoft; обычно он не используется и не распознается анализаторами, не принадлежащими Microsoft. XSD - открытый стандарт, рекомендованный WSC, и потому его определение присутствует здесь. Схемы могут как включаться внутрь XML-документа, так и храниться в отдельном файле. Вы должны быть хорошо знакомы с XML, прежде чем приступать к написанию схем, но стоит уметь распознавать главные элементы схемы, потому ниже будут изложены базовые принципы. Чтобы достичь понимания, мы рассмотрим простую схему XSD для простого документа XML, содержащую базовые детали о паре книг Wrox на тему С#. Этот документ XML можно найти в загружаемом коде, сопровождающем эту книгу (book.xml): <?xml version= 1.0 ?> <books> <book> <title>Beginning Visual C#</title> <author>Karli Watson</author> <code>7582</code> </book> <book> <title>Professional C# 2nd Edition</title> <author>Simon Robinson</author> <code>7043</code> </book> </books> Схемы XSD Элементы в схемах XSD должны относиться к пространству имен http: www. w3.org/2001/XMLSchema. Если это пространство имен не будет включено, элементы схемы не будут распознаны. Чтобы ассоциировать документ XML со схемой XSD в другом файле, необходимо добавить элемент schema location к корневому элементу: <?xml version= l.0 ?> <books schemalocation= file: C:\Beginning Visual C#\Chapter 25\books.xsd > </books> Рассмотрим кратко пример схемы XSD: <schema xmlns= http: www.w3.org/2001/XMLSchema > <element name= books > <complexType> <choice maxOccurs= unbounded > <element name= book > <complexType> <sequence> <element name= title /> <element name= author /> <element name= code /> </sequence> </complexType> </element> </choice> <attribute name= schemalocation /> </complexType> </element> </schema> Первое, что здесь бросается в глаза - это то, что пространство имен по умолчанию установлено в пространство имен XSD. Это сообщает анализатору, что элементы документа относятся к схеме. Если вы не специфицируете это пространство имен, то анализатор будет считать, что это просто нормальные элементы XML, и не поймет, что он должен применять их для проверки. Вся схема содержится внутри элемента под названием <schema> (с прописной s ; помните, что регистр символов важен). Каждый элемент, который может появиться в документе, должен быть представлен элементом <element>. Этот элемент имеет атрибут name, указывающий имя элемента. Если элемент должен содержать в себе дочерние элементы, то вы должны предусмотреть для них дескрипторы <element> внутри элемента <contextType>. Внутри этого вы специфицируете, как именно дочерние элементы должны появляться. Например, вы используете элемент <choice>, чтобы специфицировать, что допускается любой выбор дочерних элементов, или <sequence>- чтобы указать, что дочерние элементы должны появляться в том же порядке, как они перечислены в схеме. Если элемент может появляться более одного раза (как элемент <Ьоок>), потребуется поместить атрибут та хО с curs внутрь родительского элемента. Установка его в unbounded означает, что элемент может появляться неограниченное количество раз. И, наконец, любые атрибуты должны быть представлены элементами <attribute>, включая ваш атрибут schemalocation, который сообщает анализатору, где искать схему. Поместите это после конца списка дочерних элементов. Теперь, ознакомившись с основами теории XML, в следующем практическом занятии вы можете приступить к созданию документов XML. К счастью, среда Visual Studio выполняет массу черновой работы. Она даже создает схему XSD на основе вашего документа XML, не требуя написания ни единой строки кода. Практическое занятие Создание документа XML В Visual studio Для создания документа XML выполните следующие шаги. 1. Откройте Visual Studio и выберите пункт меню File=New=t>File (Файл=>Создать=> Файл). Если вы не видите этого пункта, создайте новый проект, выполните щелчок правой кнопкой мыши на проекте в Solution Explorer и выберите добавление нового элемента. Затем выберите в диалоге XML File (Файл XML). 2. В появившемся диалоге New File (Новый файл) выберите XML File и щелкните на кнопке Open (Открыть). Visual Studio создаст новый документ XML. Как видно на рис. 25.1, Visual Studio добавляет объявление XML, дополненное атрибутом encoding (он также раскрашивает атрибуты и элементы, но это не очень хорошо видно на черно-белой иллюстрации).
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |