Файл: Методические указания по выполнению лабораторных работ по дисциплине (модулю) Лингвистическое и программное обеспечение автоматизированных систем.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 11.01.2024

Просмотров: 578

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

1.Цель и задачи работы

2.Общие положения (теоретические сведения)

2.1. Принцип рекурсии в правилах грамматики

2.2. Запись правил грамматик с использованием метасимволов

2.3. Запись правил грамматик в графическом виде

3. Задание на лабораторную работу

4. Ход работы (порядок выполнения работы)

5. Содержание отчета

1.Цель и задачи работы

2.Общие положения (теоретические сведения)

2.1. Разработка лексического анализатора

2.2. Разработка синтаксического анализатора

2.3. Пример построения простого синтаксического анализатора

2.4. Анализаторы для сложных рекурсивных грамматик

5. Содержание отчета

1. Цель и задачи работы

2. Общие положения (теоретические сведения)

2.5. Логическая структура XML-документа

2.8. Описание структуры XML-документов

2.9. Язык XML Sсhema Definition (XSD)

2.10. Программная обработка XML-документов

2.11. Обработка XML-данных с использованием модели DOM

2.12. Входные данные

2.14. Сопоставление объектной иерархии с XML-данными

2.15. Создание XML-документа

2.16. Считывание XML-документа в DOM

2.17. Директивы таблицы стилей, встроенные в документ

2.18. Загрузка данных из модуля чтения

2.19. Доступ к атрибутам в модели DOM

2.20. Получение всех атрибутов в виде коллекции

2.21. Получение единичного узла атрибута

2.22. Считывание объявлений сущностей и ссылок на сущности в DOM

2.23. Сохраняемые ссылки на сущности

2.24. Разворачиваемые и не сохраняемые ссылки на сущности

2.25. Создание новых узлов в модели DOM

2.26. Создание новых атрибутов для элементов в модели DOM

2.27. Атрибуты по умолчанию

2.28. Дочерние узлы атрибута

2.29. Проверка имен XML-элементов и атрибутов при создании новых узлов

2.30. Создание новых ссылок на сущности

2.32. Копирование существующих узлов

2.33. Копирование существующих узлов из одного документа в другой

2.34. Копирование фрагментов документа

2.35. Удаление узлов, содержимого и значений из XML-документа

2.36. Изменение узлов, содержимого и значений в XML-документе

2.37. Проверка XML-документа в DOM

2.38. Проверка XML-документа в DOM

2.39. Обработка ошибок проверки и предупреждений

2.40. Сохранение и запись документа

2.41. Запись XmlDeclaration

2.42. Запись содержимого документа с помощью свойства OuterXml

3.Задание на лабораторную работу

4. Ход работы (порядок выполнения работы)

5. Содержание отчета

1. Цель и задачи работы

2. Общие положения (теоретические сведения)

3.1. Запись макроса

3.2. Организация ввода данных

3.3. Вывод данных

3. Задание на лабораторную работу

4. Ход работы (порядок выполнения работы)

5. Содержание отчета

1. Цель и задачи работы

2. Общие положения (теоретические сведения)

Организация ввода данных

Вывод данных

Заключение

3. Задание на работу

4. Ход работы (порядок выполнения работы)

5. Содержание отчета

1. Цель и задачи работы

2. Общие положения (теоретические сведения)

3.4. Эскизы

3.5. Эскизы в документах Деталей

3.6. Взаимодействие с пользователем

3.7. Выбор файла

3 Задание на работу (рабочее задание)

4. Ход работы (порядок выполнения работы)

5. Содержание отчета


Примечание

Хотя узлы DocumentType можно импортировать, у документа может быть только один узел DocumentType. Поэтому после импорта типа документа, перед вставкой его в дерево, необходимо убедиться, что в документе нет типа документа.

2.34. Копирование фрагментов документа


Можно создать узел XmlDocumentFragment, а затем добавлять к нему нижележащие узлы. При вставке узла XmlDocumentFragment с помощью метода InsertNode узел XmlDocumentFragment не копируется, но его дочерние узлы вставляются в модель XML DOM.

2.35. Удаление узлов, содержимого и значений из XML-документа


Как только в памяти создана модель XML DOM, можно удалить узлы дерева или удалить содержимое и значения из узлов определенного типа..

Для удаления узла из модели DOM XML-документа используется метод RemoveChild, с помощью которого удаляется конкретный узел. При удалении узла метод удаляет поддерево, принадлежащее удаляемому узлу т.е. если это не конечный узел.

Для удаления нескольких узлов из DOM используется метод RemoveAll, удаляющий все дочерние узлы и атрибуты (если применимо) текущего узла.

При работе с классом XmlNamedNodeMap можно удалить узел с помощью метода RemoveNamedItem.

Существует много способов удаления атрибутов. Один из них заключается в их удалении из коллекции атрибутов. Для этого выполняются следующие шаги.

  1. Возвратите коллекцию атрибутов из элемента с помощью кода XmlAttributeCollection attrs = elem.Attributes;.

  2. Удалите атрибут из коллекции атрибутов, используя один из трех методов.

  • Метод Remove удаляет указанный атрибут.

  • Метод RemoveAll удаляет все атрибуты из коллекции, оставляя элемент без атрибутов.

  • Метод RemoveAt удаляет атрибут из коллекции, используя его индексный номер.

Следующие методы удаляют атрибуты из узла элемента.

  • Метод RemoveAllAttributes удаляет коллекцию атрибутов.

  • Метод RemoveAttribute удаляет из коллекции один атрибут по заданному имени.

  • Метод RemoveAttributeAt удаляет из коллекции один атрибут по индексному номеру.

Чтобы удалить атрибут, можно также вернуть элемент, вернуть атрибут из коллекции атрибутов и напрямую удалить узел атрибута. Чтобы вернуть атрибут из коллекции атрибутов, можно использовать имя XmlAttribute attr = attrs["attr_name"];, индекс XmlAttribute attr = attrs[0]; или полное имя, включая пространство имен XmlAttribute attr = attrs["attr_localName", "attr_namespace"].

Независимо от способа удаления атрибута, существуют специальные ограничения на удаление атрибутов, определенные в определении DTD как атрибуты по умолчанию. Атрибуты по умолчанию нельзя удалять, если не удален элемент, которому они принадлежат. Атрибуты по умолчанию всегда присутствуют в элементах, для которых декларированы атрибуты по умолчанию. Удаление атрибута по умолчанию из коллекции

XmlAttributeCollection или XmlElement приводит к вставке замещающего атрибута в коллекцию XmlAttributeCollection элемента и инициализации декларированного значения по умолчанию. Если существует элемент, определенный как , то существует элемент book с тремя атрибутами, объявленными по умолчанию. Реализация модели XML DOM гарантирует, что, пока существует элемент book, он имеет три атрибута по умолчанию: att1, att2 и att3.

Если метод XmlAttribute вызывается с атрибутом RemoveAll, он присваивает атрибуту значение String.Empty, поскольку атрибут не может существовать без значения.

Для типов узлов, наследующих от XmlCharacterData, являющихся типами узлов XmlComment,XmlText,XmlCDataSection,XmlWhitespace и XmlSignificantWhitespace, можно удалить символы с помощью метода DeleteData, который удаляет диапазон символов из узла. Если требуется полностью удалить содержимое, нужно удалить узел, содержащий содержимое. Если требуется сохранить узел, содержимое которого неверно, нужно изменить содержимое.

2.36. Изменение узлов, содержимого и значений в XML-документе


Существует множество способов изменения узлов и содержимого в документе. Можно выполнить следующие действия.

  • изменять значение узлов с помощью свойства Value;

  • изменять набор узлов в целом, заменяя узлы новыми. Это делается с помощью свойства InnerXml;

  • заменять существующие узлы новыми с помощью метода RemoveChild;

  • добавлять в узлы дополнительные символы, наследующие от класса XmlCharacterData, используя методы AppendData, InsertData или ReplaceData;

  • изменять содержимое путем удаления диапазона символов с помощью метода DeleteData для типов узлов, наследующих от XmlCharacterData.

Изменить значение узла можно с помощью простого приема node.Value = "new value";. В следующей таблице перечислены типы узлов, в которых работает эта строка кода, и указано, какие данные изменяются для этого типа узла.

Таблица 2.17




Тип узла

Изменяемые данные

Атрибут

Значение атрибута.

CDATASection.

Содержимое CDATASection.

Добавление примечаний

Содержимое комментария.

ProcessingInstruction;

Содержимое, за исключением цели.

Text

Содержимое текстового узла.

XmlDeclaration

Содержимое декларации, за исключением разметки .

Whitespace

Значение символа пробела. В качестве значения можно задать один из четырех различаемых в XML пробельных символов: пробел, табуляция, CR или LF.

SignificantWhitespace

Значение значащих пробелов. В качестве значения можно задать один из четырех различаемых в XML пробельных символов: пробел, табуляция, CR или LF.


Типы узлов, не представленные в таблице, являются недопустимыми для установки значений. При установке значения в узле такого типа вызывается исключение InvalidOperationException.

Свойство InnerXml изменяет разметку дочерних узлов текущего узла. Задание этого свойства замещает дочерние узлы значением заданной строки, содержимое которой прошло синтаксический анализ. Синтаксический анализ выполняется в контексте текущего пространства имен. Кроме того, свойство InnerXml удаляет избыточные декларации пространств имен. В результате после многочисленных операций вырезания и вставки размер документа не будет увеличиваться за счет избыточных деклараций пространств имен. Пример кода, демонстрирующий влияние пространств имен на работу InnerXml, см. в свойстве InnerXml.

Использование методов ReplaceData и RemoveChild возвращает замещенный или удаленный узел. Затем этот узел можно повторно вставить в другом месте модели XML DOM. Метод ReplaceData выполняет двойную проверку узла, вставляемого в документ. Первая проверка обеспечивает то, что узел становится дочерним для узла, который может иметь дочерние узлы такого типа. Вторая проверка обеспечивает то, что вставляемый узел не является предком узла, для которого он становится дочерним. Несоблюдение любого из этих условий вызывает исключение InvalidOperationException.

Допустимо добавлять дочерний узел, доступный только для чтения, в узел, поддерживающий изменение, или удалять из него. Однако при попытке изменить сам узел, доступный только для чтения, вызывается исключение InvalidOperationException. Примером может служить изменение потомков узла XmlEntityReference. Потомки доступны только для чтения, и их нельзя изменить. Любая попытка изменить вызывает исключение InvalidOperationException.

2.37. Проверка XML-документа в DOM


По умолчанию класс XmlDocument не сверяет код XML в модели DOM ни с данными схемы XSD, ни c определением типа документа (DTD). Код XML проверяется только на правильность формата.

С целью проверки XML в модели DOM можно проверить код XML в процессе его загрузки; для этого нужно передать проверяющий схему XmlReader методу Load класса XmlDocument или проверить ранее не проверенный XML-документ в модели DOM с помощью метода Validate класса XmlDocument.

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

Для создания объекта XmlReader с проверкой по схеме выполните следующие действия.

  1. Сформируйте новый экземпляр класса XmlReaderSettings.

  2. Добавьте схему XML к свойству Schemas экземпляра XmlReaderSettings.

  3. Укажите Schema в качестве ValidationType.

  4. Дополнительно можно указать ValidationFlags и ValidationEventHandler для обработки ошибок проверки по схеме, а также предупреждений, выданных в процессе проверки.

  5. Наконец, передайте объект XmlReaderSettings методу Create класса XmlReader вместе с XML-документом; в результате будет создан объект XmlReader с проверкой по схеме.

В следующем примере кода объект XmlReader с проверкой по схеме проверяет XML-данные, загружаемые в модель DOM. В XML-документ вносятся недействительные изменения; документ вновь подвергается проверке, что приводит к появлению ошибок проверки схемы. Наконец, одна из ошибок исправляется, после чего часть XML-документа подвергается частичной проверке.

C#

using System;

using System.Xml;

using System.Xml.Schema;
class XmlDocumentValidationExample

{

static void Main(string[] args)

{

try

{

// Create a schema validating XmlReader.

XmlReaderSettings settings = new XmlReaderSettings();

settings.Schemas.Add("http://www.contoso.com/books", "contosoBooks.xsd");

settings.ValidationEventHandler += new ValidationEventHandler(ValidationEventHandler);

settings.ValidationFlags = settings.ValidationFlags | XmlSchemaValidationFlags.ReportValidationWarnings;

settings.ValidationType = ValidationType.Schema;
XmlReader reader = XmlReader.Create("contosoBooks.xml", settings);
// The XmlDocument validates the XML document contained

// in the XmlReader as it is loaded into the DOM.

XmlDocument document = new XmlDocument();

document.Load(reader);
// Make an invalid change to the first and last

// price elements in the XML document, and write

// the XmlSchemaInfo values assigned to the price

// element during load validation to the console.