Главная страница
Навигация по странице:

  • CloneNode . 2.32. Копирование существующих узлов Модель XML DOM включает множество методов и свойств, которые можно использовать для выбора узла, например SelectSingleNode

  • ChildNodes[int i] , Attributes[int i]

  • ImportNode

  • XmlDocument

  • Тип узла Параметр

  • XmlAttribute

  • МУ_ЛР_ЛиПОАС. Методические указания по выполнению лабораторных работ по дисциплине (модулю) Лингвистическое и программное обеспечение автоматизированных систем


    Скачать 2.76 Mb.
    НазваниеМетодические указания по выполнению лабораторных работ по дисциплине (модулю) Лингвистическое и программное обеспечение автоматизированных систем
    Дата12.04.2023
    Размер2.76 Mb.
    Формат файлаdoc
    Имя файлаМУ_ЛР_ЛиПОАС.doc
    ТипМетодические указания
    #1057976
    страница20 из 32
    1   ...   16   17   18   19   20   21   22   23   ...   32

    2.31. Влияние пространства имен на раскрытие ссылок на сущности для новых узлов, содержащих элементы и атрибуты


    Так как содержимое декларации сущности может содержать абсолютно все, существует вероятность, что содержимое может содержать элемент типа test
    ">.

    Во время анализа XML элемент &aname; не раскрывается своим замененным содержимым. Раскрывание XML не выполняется, так как разрешение пространства имен для элемента не может произойти, пока узел не размещается в документе. До этого времени неизвестно, какое пространство имен расположено в области. Когда узел помещается в документ, происходит разрешение пространства имен и результирующее содержимое сущности анализируется внутри соответствующих узлов.

    Примечание

    После того, как раскрывание произошло в заново созданном узле ссылки сущности, оно никогда повторно не происходит. Поэтому пространства имен, используемые в тексте замены для элемента, привязываются во время задания родительского узла. Тем не менее пространство имен может быть изменено для существующих узлов ссылки сущности, и они могут быть вставлены куда-либо еще, или для узлов ссылки сущности, которые копируются с помощью метода CloneNode.

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


    Модель XML DOM включает множество методов и свойств, которые можно использовать для выбора узла, например SelectSingleNode, ChildNodes[int i] , Attributes[int i] . После выбора узла его можно вставить в дерево с помощью одного из методов вставки, допустимых для данного типа узла. Единственное ограничение при выполнении операции вставки узла в дерево состоит в том, что по ее завершении документ должен оставаться документом правильного формата. При вставке существующего узла в дерево DOM узел удаляется из своей исходной позиции и добавляется в целевую позицию.

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


    Метод ImportNode позволяет скопировать узел или целое поддерево узлов из одного документа XmlDocument в другой. Узел, возвращенный после вызова, является копией узла из исходного документа, включая значения атрибутов, имя узла, тип узла и все атрибуты, связанные с пространством имен, такие как префикс, локальное имя и URI пространства имен. Исходный документ не изменяется. После импорта узла его необходимо добавить к дереву с помощью одного из методов, используемых для вставки узлов.

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

    В зависимости от типа импортированного узла и значения параметра deep, дополнительные данные копируются по мере необходимости. Этот метод пытается зеркально воспроизвести поведение, ожидаемое, если фрагмент исходного XML или HTML копируется из одного документа в другой, с учетом того факта, касающегося XML, что два документа могут иметь различные определения типа документа (DTD).

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

    Таблица 2.16




    Тип узла

    Параметр deep имеет значение TRUE

    Параметр deep имеет значение FALSE

    XmlAttribute

    Specified в XmlAttribute имеет значение TRUE. Потомки исходного узла XmlAttribute рекурсивно импортируются, а результирующие узлы собираются в поддерево.

    Параметр deep не применяется к узлам XmlAttribute, так как вместе с ними всегда импортируются дочерние узлы.

    XmlCDataSection

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

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

    XmlComment

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

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

    XmlDocumentFragment

    Потомки исходного узла рекурсивно импортируются, а результирующие узлы создаются заново и составляют соответствующее поддерево.

    Создается пустой узел XmlDocumentFragment.

    XmlDocumentType

    Копирует узел вместе с данными.*

    Копирует узел вместе с данными.*

    XmlElement

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

    Импортируются указанные атрибутивные узлы исходного элемента, а затем созданные узлы XmlAttribute присоединяются к новому элементу. Узлы-потомки не копируются. Примечание. Атрибуты по умолчанию не копируются. Если документ, в который выполняется импорт, определяет атрибуты по умолчанию для данного имени элемента, они назначаются.

    XmlEntityReference

    Так как в исходном и целевом документах сущности могут быть определены по-разному, этот метод копирует только узел XmlEntityReference. Текст замены не включается. Если в документе назначения определена сущность, ей назначается значение.

    Так как в исходном и целевом документах сущности могут быть определены по-разному, этот метод копирует только узел XmlEntityReference. Текст замены не включается. Если в документе назначения определена сущность, ей назначается значение.

    XmlProcessingInstruction

    Копирует цель и значение данных из импортируемого узла.

    Копирует цель и значение данных из импортируемого узла.

    XmlText

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

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

    XmlSignificantWhitespace

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

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

    XmlWhitespace

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

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

    XmlDeclaration

    Копирует цель и значение данных из импортируемого узла.

    Копирует цель и значение данных из импортируемого узла.

    Все остальные типы узлов

    Эти типы узлов импортировать нельзя.

    Эти типы узлов импортировать нельзя.

    Примечание

    Хотя узлы DocumentType можно импортировать, у документа может быть только один узел DocumentType. Поэтому после импорта типа документа, перед вставкой его в дерево, необходимо убедиться, что в документе нет типа документа.
    1   ...   16   17   18   19   20   21   22   23   ...   32


    написать администратору сайта