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

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

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

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

Добавлен: 11.01.2024

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

Скачиваний: 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. Содержание отчета

, предоставляют методы синхронизации с данными ADO.NET, одновременно делая эти данные доступными в виде XML.

Модель DOM чрезвычайно полезна для считывания XML-данных в память, изменения их структуры, добавления и удаления узлов, изменения данных, принадлежащих узлу (например, текста, содержащегося в документе). Однако существуют и другие классы, которые в некоторых ситуациях работают быстрее модели DOM. Классы XmlReader и XmlWriter предоставляют быстрый последовательный потоковый доступ к XML без поддержки кэширования. Если вам нужен произвольный доступ с моделью курсора и XPath, используйте класс XPathNavigator.

2.13. Типы XML-узлов


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

Теги индикатора порядка


ТИПЫ XML-УЗЛОВ

Тип узла модели DOM

Object

Описание

Document

XmlDocument

Контейнер для всех узлов в дереве. Он также называется корнем документа, что не всегда совпадает с корневым элементом.

DocumentFragment

XmlDocumentFragment

Временный контейнер, содержащий один или несколько узлов, не имеющих древовидной структуры.

DocumentType;

XmlDocumentType

Представляет узел .

EntityReference

XmlEntityReference

Представляет текст нераскрытой ссылки на сущность.

Элемент

XmlElement

Представляет узел элемента.

Attr

XmlAttribute

Атрибут элемента.

ProcessingInstruction;

XmlProcessingInstruction

Узел инструкций по обработке.

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

XmlComment

Узел комментария.

Text

XmlText

Текст, принадлежащий элементу или атрибуту.

CDATASection.

XmlCDataSection

Представляет CDATA.

Объект

XmlEntity

Представляет декларации в XML-документе, полученные из встроенного DTD или из внешних DTD и сущностей параметров.

Notation

XmlNotation

Представляет нотацию, объявленную в DTD.

Атрибут (attr) упомянут в числе узлов модели W3C DOM на уровне 1 в разделе "1.2. Фундаментальные интерфейсы", но не считается дочерним ни для какого узла элемента.

В следующей таблице представлены дополнительные типы узлов, которые не определены консорциумом W3C, но доступны для использования в модели объектов Microsoft .NET Framework в виде перечислений XmlNodeType. Таким образом, для этих типов узлов отсутствует соответствующий столбец типа узла в модели DOM.

Таблица 2.12

Типы узлов XML





Тип узла

Описание

XmlDeclaration

Представляет узел декларации .

XmlSignificantWhitespace

Представляет значимые пробелы, то есть пробелы в смешанном содержимом.

XmlWhitespace

Представляет пробелы в содержимом элемента.

EndElement

Возвращается, когда модуль XmlReader достигает конца элемента.

Пример XML-кода:

Для получения дополнительной информации см. XmlNodeType.

EndEntity

Возвращается, когда модуль XmlReader достигает конца замещения сущности в результате вызова метода ResolveEntity. Для получения дополнительной информации см. XmlNodeType.

Пример кода, считывающего XML и использующего конструкцию case с типами узлов для вывода сведений об узле и его содержимом, см. в статье NodeType.
1   ...   9   10   11   12   13   14   15   16   ...   32

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


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

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

Если имеется следующий простой XML:

Ввод







Входные данные представлены в памяти следующим деревом узлов с назначенным свойством типа узлов:


Представление дерева узлов book и title

Элемент book становится объектом XmlElementtitle, следующий элемент также становится объектом XmlElement, а элемент content становится объектом XmlText. Методы и свойства объекта XmlElement отличаются от методов и свойств, доступных для объекта XmlText. Поэтому очень важно знать, какой тип узла получает XML, так как тип узла определяет действия, которые можно выполнить.

В следующих примерах выполняется считывание XML-данных и запись другого текста, в зависимости от типа узла. Использование следующего XML-файла items.xml для получения входных данных.

Ввод



]>



Test with an entity: &number;

test with a child element stuff

test with a CDATA section ]]> def

Test with a char entity: A

1234567890ABCD



Следующий пример кода считывает файл items.xml и отображает сведения о типах узлов.

C#

using System;

using System.IO;

using System.Xml;

public class Sample

{

private const String filename = "items.xml";

public static void Main()

{

XmlTextReader reader = null;

try

{

// Load the reader with the data file and ignore

// all white space nodes.

reader = new XmlTextReader(filename);

reader.WhitespaceHandling = WhitespaceHandling.None;

// Parse the file and display each of the nodes.

while (reader.Read())

{

switch (reader.NodeType)

{

case XmlNodeType.Element:

Console.Write("<{0}>", reader.Name);

break;

case XmlNodeType.Text:

Console.Write(reader.Value);

break;

case XmlNodeType.CDATA:


Console.Write("", reader.Value);

break;

case XmlNodeType.ProcessingInstruction:

Console.Write("{0} {1}?>", reader.Name, reader.Value);

break;

case XmlNodeType.Comment:

Console.Write("", reader.Value);

break;

case XmlNodeType.XmlDeclaration:

Console.Write("");

break;

case XmlNodeType.Document:

break;

case XmlNodeType.DocumentType:

Console.Write(", reader.Name, reader.Value);

break;

case XmlNodeType.EntityReference:

Console.Write(reader.Name);

break;

case XmlNodeType.EndElement:

Console.Write("{0}>", reader.Name);

break;

}

}

}

finally

{

if (reader != null)

reader.Close();

}

}

} // End class

Вывод примера содержит сопоставление данных типам узлов.

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



]



Test with an entity: 123

test with a child element stuff

test with a CDATA section ]]> def

Test with a char entity: A

<--Fourteen chars in this element.-->

1234567890ABCD



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

Таблица 2.13





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

Вывод

Проверка типа узла





XmlNodeType.XmlDeclaration





XmlNodeType.Comment

]>

]

XmlNodeType.DocumentType





XmlNodeType.Element





XmlNodeType.Element

Проверка с помощью сущности: &number;

Проверка с помощью сущности: 123

XmlNodeType.Text





XmlNodeType.EndElement





XmNodeType.Element

test with a child element

test with a child element

XmlNodeType.Text





XmlNodeType.Element

stuff

stuff

XmlNodeType.Text





XmlNodeType.EndElement





XmlNodeType.Element

test with a CDATA section

test with a CDATA section

XmlTest.Text

]]>

]]>

XmlTest.CDATA

def

def

XmlNodeType.Text





XmlNodeType.EndElement





XmlNodeType.Element

Проверка с помощью сущности char: A

Проверка с помощью сущности char: А

XmlNodeType.Text





XmlNodeType.EndElement



<--Fourteen chars in this element.-->

XmlNodeType.Comment





XmlNodeType.Element

1234567890ABCD

1234567890ABCD

XmlNodeType.Text





XmlNodeType.EndElement





XmlNodeType.EndElement

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

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


XML-документ можно создать двумя способами. Один из них заключается в создании объекта XmlDocument без параметров. Второй включает создание объекта XmlDocument, которому нужно в качестве параметра передать XmlNameTable. В следующем примере показано создание пустого объекта XmlDocument без параметров.

C#

XmlDocument doc = new XmlDocument();

После создания документа в него можно с помощью метода Load загрузить данные из строки, потока, URL-адреса, текстового модуля чтения или класса, производного от XmlReader. Есть еще один метод загрузки: LoadXML, который считывает XML из строки.

Существует класс с именем XmlNameTable. Он является таблицей атомарных объектов строки. Эта таблица предоставляет средству синтаксического анализа XML эффективный способ использовать один и тот же строковый объект для всех повторяющихся имен элементов и атрибутов в XML-документе. Класс XmlNameTable автоматически создается при создании документа, как показано выше, и заполняется именами элементов и атрибутов при загрузке этого документа. Если у вас уже есть документ с таблицей имен и эти имена можно применить в другом документе, создайте новый документ с помощью метода Load, передав ему в качестве параметра таблицу XmlNameTable. Когда документ создается с помощью этого метода, он использует существующую таблицу XmlNameTable со всеми атрибутами и элементами, ранее загруженными в нее из другого документа. Это можно использовать для эффективного сравнения имен элементов и атрибутов.

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


XML-данные считываются в память из разных форматов. Они могут быть считаны из строки, URL-адреса, модуля чтения текста или класса, производного от класса XmlReader.

Метод Load загружает документ в память и имеет перегруженные методы для получения данных из разных форматов. Существует также метод LoadXml, который считывает XML-данные из строки.

Разные методы Load влияют на то, какие узлы создаются при загрузке модели DOM. В следующей таблице приведены различия между некоторыми методами Load, а также ссылки на разделы, описывающие их.

Таблица 2.14




Субъект

Раздел

Создание узлов пробелов

Объект, используемый для загрузки модели DOM, влияет на узлы пробелов и значащих пробелов, формируемые в модели DOM..

Загрузка XML-данных, начиная с определенного узла, или загрузка всего XML-документа

С помощью метода XmlDocument.Load данные в модель DOM можно загружать с определенного узла.

Проверка XML-данных по мере загрузки

Можно проводить проверку XML-данных, загружаемых в модель DOM, по мере их загрузки. Делается это с помощью проверяющего объекта XmlReader.