Файл: Методические указания по выполнению лабораторных работ по дисциплине (модулю) Лингвистическое и программное обеспечение автоматизированных систем.doc
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 11.01.2024
Просмотров: 629
Скачиваний: 3
СОДЕРЖАНИЕ
2.Общие положения (теоретические сведения)
2.1. Принцип рекурсии в правилах грамматики
2.2. Запись правил грамматик с использованием метасимволов
2.3. Запись правил грамматик в графическом виде
3. Задание на лабораторную работу
4. Ход работы (порядок выполнения работы)
2.Общие положения (теоретические сведения)
2.1. Разработка лексического анализатора
2.2. Разработка синтаксического анализатора
2.3. Пример построения простого синтаксического анализатора
2.4. Анализаторы для сложных рекурсивных грамматик
2. Общие положения (теоретические сведения)
2.5. Логическая структура XML-документа
2.8. Описание структуры XML-документов
2.9. Язык XML Sсhema Definition (XSD)
2.10. Программная обработка XML-документов
2.11. Обработка XML-данных с использованием модели DOM
2.14. Сопоставление объектной иерархии с 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.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.42. Запись содержимого документа с помощью свойства OuterXml
3.Задание на лабораторную работу
4. Ход работы (порядок выполнения работы)
2. Общие положения (теоретические сведения)
3. Задание на лабораторную работу
4. Ход работы (порядок выполнения работы)
2. Общие положения (теоретические сведения)
4. Ход работы (порядок выполнения работы)
2. Общие положения (теоретические сведения)
3.5. Эскизы в документах Деталей
3.6. Взаимодействие с пользователем
3 Задание на работу (рабочее задание)
разворачивает ссылку на сущность и заменяет &publisher; содержимым Microsoft Press, формируя следующий расширенный XML.
Выходныеданные
Существует много типов сущностей. На следующей схеме показана классификация типов сущности и терминология.
По умолчанию реализация модели DOM на платформе Microsoft .NET Framework сохраняет ссылки на сущности и не развертывает их при загрузке XML. Это означает, что при загрузке документа в модель DOM создается узел XmlEntityReference_publisher;_,_содержащий_ссылочную_переменную'>XmlEntityReference&publisher;, содержащий ссылочную переменную , с дочерними узлами, представляющими содержимое сущности, объявленной в определении DTD.
Следующая схема на примере объявления сущности демонстрирует узлы XmlEntity и XmlText, создаваемые на основе этого объявления.
Будут ли развертываться ссылки на сущности или нет - зависит от вида узлов, создаваемых в дереве модели DOM в памяти.
2.23. Сохраняемые ссылки на сущности
Если ссылки на сущности не разворачиваются, а сохраняются, модель XML DOM строит узел XmlEntityReference, когда обнаруживает ссылку на сущность.
Используя следующий XML-код,
Модель DOM строит узел XmlEntityReference, когда встречает ссылку &publisher;. Узел XmlEntityReference содержит дочерние узлы, которые копируются из содержимого декларации сущности. В предыдущем примере присутствует текст в декларации сущности, поэтому узел XmlText создается как дочерний узел для узла ссылки на сущность.
Древовидная структура для сохраняемых ссылок на сущности
Дочерние узлы XmlEntityReference являются копиями всех дочерних узлов, созданных из узла
XmlEntity в момент, когда была обнаружена декларация сущности.
Примечание
Узлы, копируемые из XmlEntity, не всегда остаются точными копиями после помещения в узел ссылки на сущность. Могут существовать пространства имен, лежащие в области узла ссылки на сущность, которые оказывают влияние на конечную конфигурацию дочерних узлов.
По умолчанию сохраняются сущности общего вида, такие как &abc;, и всегда создаются узлы XmlEntityReference.
2.24. Разворачиваемые и не сохраняемые ссылки на сущности
Если ссылка на сущность разворачивается и заменяется текстом, который она представляет, узел XmlEntityReference не создается. Вместо этого выполняется синтаксический анализ для декларации сущности и на место XmlEntityReference копируются узлы, созданные из содержимого этой декларации. Таким образом, в примере &publisher; ссылка &publisher; не сохраняется, а вместо нее создается узел XmlText.
Древовидная структура для разворачиваемых ссылок на сущности
Сущности-символы, такие как B и <, не сохраняются. Вместо этого они всегда разворачиваются и представляются в виде текстовых узлов.
Чтобы сохранить узлы XmlEntityReference и дочерние узлы в присоединенной у ней ссылке на сущности, установите флаг EntityHandling в значение ExpandCharEntities. В противном случае оставьте для флага EntityHandling значение по умолчанию - ExpandEntities. В этом случае узлы ссылок на сущности не будут отображаться в модели DOM. Эти узлы замещаются узлами-копиями дочерних узлов декларации сущности.
Один побочный эффект от несохранения ссылок на сущности состоит в том, что после сохранения документа и передачи его в другое приложение этому приложению будет неизвестно, что узлы были порождены ссылкой на сущность. Если же ссылки на сущности сохраняются, то принимающее приложение, обнаружив ссылку на сущность, считает ее дочерние узлы. Очевидно, что дочерние узлы представляют данные, находившиеся в декларации сущности. Например, модель DOM в случае сохранения ссылок на сущности теоретически имела бы следующую структуру.
XmlElement: publisher
XmlEntityReference: &publisher;
XmlText: Microsoft Press
Если ссылки на сущности разворачиваются в модели DOM (метод по умолчанию), древовидная структура имеет следующий вид:
XmlElement: publisher
XmlText: Microsoft Press
Обратите внимание, что ссылка на сущность отсутствует и принимающее приложение не может определить, что узел XmlText со значением "Microsoft Press" был создан из декларации сущности.
Если используется модуль чтения, который не умеет разрешать сущности, метод Load создает исключение, когда обнаруживает ссылку на сущность.
2.25. Создание новых узлов в модели DOM
К классе XmlDocument доступен метод для создания всех типов узлов. Для создания узла методу нужно передать имя (если необходимо) и содержимое или другие параметры для узлов, имеющих содержимое (например, текстовый узел). Далее представлены методы, которым необходимо передать имя и некоторые другие параметры для создания нужного узла.
-
CreateCDataSection -
CreateComment -
CreateDocumentFragment -
CreateDocumentType -
CreateElement -
CreateNode -
CreateProcessingInstruction -
CreateSignificantWhitespace -
CreateTextNode -
CreateWhitespace -
CreateXmlDeclaration
Для других типов узлов недостаточно просто задать данные параметров.
После создания новых узлов становятся доступны несколько методов для вставки узлов в дерево. В таблице перечислены методы и описано место появления нового узла в модели XML DOM.
Таблица 2.15
| |
Метод | Размещение узла |
InsertBefore | Вставляется перед узлом ссылки. Например, следующий код вставляет новый узел в позицию 5: Dim refChild As XmlNode = node.ChildNodes(4) 'The reference is zero-based.node.InsertBefore(newChild, refChild); XmlNode refChild = node.ChildNodes[4]; //The reference is zero-based. node.InsertBefore(newChild, refChild); Дополнительные сведения см. в описании метода InsertBefore. |
InsertAfter | Вставляется после узла ссылки. Пример: node.InsertAfter(newChild, refChild) node.InsertAfter(newChild, refChild); Дополнительные сведения см. в описании метода InsertAfter. |
AppendChild | Добавляет узел в конец списка дочерних узлов заданного узла. Если добавляемый узел представляет собой XmlDocumentFragment, все содержимое фрагмента документа перемещается в дочерний список этого узла. Дополнительные сведения см. в описании метода AppendChild. |
PrependChild | Добавляет узел в начало списка дочерних узлов заданного узла. Если добавляемый узел представляет собой XmlDocumentFragment, все содержимое фрагмента документа перемещается в дочерний список этого узла. Дополнительные сведения см. в описании метода PrependChild. |
Append | Добавляет узел XmlAttribute в конец коллекции атрибутов, связанной с элементом. Дополнительные сведения см. в описании метода Append. |