DOM | Интерфейс DOMImplementation

DOM | Интерфейс DOMImplementation

Пользовательские агенты должны создавать объект DOMImplementation всякий раз, когда создается документ, и связывать его с этим документом.

IDL

[Exposed=Window]
interface DOMImplementation {
   [NewObject] DocumentType createDocumentType(DOMString qualifiedName, DOMString publicId, DOMString systemId);
   [NewObject] XMLDocument createDocument(DOMString? namespace, [LegacyNullToEmptyString] DOMString qualifiedName, optional DocumentType? doctype = null);
   [NewObject] Document createHTMLDocument(optional DOMString title);

boolean hasFeature(); // бесполезный; всегда возвращает истину
};

 

 

Для веб-разработчиков (не нормативно)

doctype = document . implementation . createDocumentType(qualifiedName, publicId, systemId)

Возвращает doctype с указанными qualifiedName, publicId и systemId. Если qualifiedName не соответствует продукту Name, генерируется исключение DOMException «InvalidCharacterError», а если оно не соответствует продукту QName, генерируется исключение DOMException «NamespaceError».

doc = document . implementation . createDocument(namespace, qualifiedName [, doctype = null])

Возвращает XMLDocument с элементом документа, локальное имя которого — это qualifiedName, а пространство именnamespace (кроме случаев, когда qualifiedName является пустой строкой), и с doctype, если он указан, в качестве его типа документа.

Этот метод генерирует те же исключения, что и метод createElementNS(), когда вызывается с пространством имен namespace и квалифицированным именем qualifiedName.

doc = document . implementation . createHTMLDocument([title])

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

 

При вызове метода createDocumentType(qualifiedName, publicId, systemId) необходимо выполнить следующие действия:

1. Проверяем на соответсвие qualifiedName.
2. Верните новый тип документа с qualifiedName как его именем, publicId в качестве общедоступного идентификатора и systemId в качестве идентификатора системы, а для документа узла установите соответствующий документ этого this.

Примечание!

Не выполняется проверка того, что кодовые точки publicId соответствуют продукту PubidChar или что systemId не содержит одновременно ‘"‘ и «'«.

 

Метод createDocument(namespace, qualifiedName, doctype) при вызове должен выполнять следующие действия:

1. Пусть document будет новым объектом XMLDocument.
2. Пусть element будет null.
3. Если qualifiedName не является пустой строкой, тогда установите для element результат выполнения внутренних шагов createElementNS, данного document, namespace, qualifiedName и пустого словаря.
4. Если doctype не равно null, добавьте doctype к document.
5. Если element не равен null, добавьте element в document.
6. Источник document - это источник связанного документа этого this.
7. Тип содержимого document определяется пространством имен namespace:
   HTML namespace
      application/xhtml+xml
   SVG namespace
      image/svg+xml
   Любое другое пространство имен
      application/xml
8. Вернуть document

 

При вызове метода createHTMLDocument(title) необходимо выполнить следующие действия:

1. Пусть doc будет новым документом, который является документом HTML.
2. Установите тип содержимого документа doc на «text/html».
3. Добавьте новый тип документа с именем «html» и с документом узла, установленным на doc, в doc.
4. Добавьте в doc результат создания элемента, заданного doc, html и пространством имен HTML в doc.
5. Добавьте результат создания элемента, заданного doc, head и пространством имен HTML, к элементу html, созданному ранее.
6. Если указан заголовок title:
   1. Добавьте результат создания элемента с заданным doc, title и пространством имен HTML к ранее созданному элементу head.
   2. Добавьте новый узел Text с его набором данных в title (который может быть пустой строкой) и его документом узла, установленным в doc, к элементу title, созданному ранее.
7. Добавьте результат создания элемента, заданного документом doc, body и пространством имен HTML, к элементу html, созданному ранее.
8. Источник документа doc - это источник связанного документа этого this.
9. Вернуть doc

 

При вызове метода hasFeature() он должен возвращать значение true.

Примечание!

Изначально hasFeature() сообщал, заявлял ли пользовательский агент о поддержке данной функции DOM, но опыт показал, что это было не так надежно или детально, как простая проверка наличия требуемых объектов, атрибутов или методов. Таким образом, он больше не будет использоваться, но продолжает существовать (и просто возвращает true), чтобы старые страницы не перестали работать.

 

Ссылки

DOM стандарт — https://efim360.ru/dom/

Читайте перевод полной версии стандарта «объектной модели документа», чтобы ознакомиться со всеми концепциями и интерфейсами.

DOMLiving Standardhttps://dom.spec.whatwg.org

Читайте официальную документацию живого стандарта «объектной модели документа», чтобы быть в курсе последних изменений.