МУ_ЛР_ЛиПОАС. Методические указания по выполнению лабораторных работ по дисциплине (модулю) Лингвистическое и программное обеспечение автоматизированных систем
Скачать 2.76 Mb.
|
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
Примечание Хотя узлы DocumentType можно импортировать, у документа может быть только один узел DocumentType. Поэтому после импорта типа документа, перед вставкой его в дерево, необходимо убедиться, что в документе нет типа документа. |