Spec-Zone.ru › XSLT & XPath

Использование интерфейса Mozilla JavaScript для XSL-преобразований

В этом документе описывается интерфейс JavaScript в Mozilla 1.2 и выше для XSLT-обработчика (TransforMiiX).

Создание XSLTProcessor

Для начала необходимо создать объект XSLTProcessor:

const processor = new XSLTProcessor();

Указание стильного файла

Прежде чем использовать его, вы должны импортировать стильный файл с помощью метода XSLTProcessor.importStylesheet(). Он принимает единственный параметр — узел DOM стильного файла XSLT для импорта.

Примечание: Импорт является динамическим, что означает, что если вы измените DOM стильного файла после его импорта, это отразится в обработке. Вместо изменения DOM рекомендуется использовать параметры стильного файла, которые обычно проще и могут обеспечить лучшую производительность.

const testTransform = document.implementation.createDocument("", "test", null);

// Just an example to get a transform into a script as a DOM
// XMLDocument.load is asynchronous, so all processing happens in the
// onload handler
testTransform.addEventListener("load", onload, false);
testTransform.load("test-transform.xml");
function onload() {
  processor.importStylesheet(testTransform);
}

Метод XSLTProcessor.importStylesheet() требует один аргумент — узел DOM. Если этот узел является узлом документа, вы можете передать полный XSL-трансформатор или литеральный трансформируемый элемент результата, в противном случае он должен быть элементом xsl:stylesheet или xsl:transform.

Преобразование документа

Для преобразования документа с использованием импортированного XSLT-стильного файла можно использовать методы XSLTProcessor.transformToDocument() или XSLTProcessor.transformToFragment().

transformToDocument

Метод XSLTProcessor.transformToDocument() принимает один аргумент — исходный узел для преобразования, и возвращает новый объект Document с результатами преобразования:

const newDocument = processor.transformToDocument(domToBeTransformed);

Результат зависит от метода вывода стильного файла:

  • html - HTMLDocument
  • xml - XMLDocument
  • text - XMLDocument с единственным корневым элементом <transformiix:result> с текстом в качестве дочернего элемента

transformToFragment

Также можно использовать метод XSLTProcessor.transformToFragment(), который вернет узел DocumentFragment. Это удобно, потому что добавление фрагмента к другому узлу прозрачно добавляет всех дочерних элементов этого фрагмента, а сам фрагмент не сливается. Фрагменты полезны для перемещения узлов и их хранения без избыточности полного объекта документа.

Метод XSLTProcessor.transformToFragment() принимает два аргумента: исходный документ для преобразования (как указано выше) и объект Document, который будет владельцем фрагмента (все фрагменты должны принадлежать документу).

const ownerDocument = document.implementation.createDocument("", "test", null);
const newFragment = processor.transformToFragment(domToBeTransformed, ownerDocument);

Метод XSLTProcessor.transformToFragment() будет генерировать только объекты HTML DOM, если сам документ-владелец является HTMLDocument, или если метод вывода стильного файла равен HTML. Он **не** будет генерировать объекты HTML DOM, если только верхний элемент результата — <html>, поскольку метод XSLTProcessor.transformToFragment() редко используется для создания этого элемента. Если вы хотите это переопределить, вы можете установить метод вывода обычным способом.

Преобразование HTML

К сожалению, в настоящее время преобразование узлов HTML с помощью XSLT не поддерживается. Некоторые вещи работают, если вы используете имена узлов с маленькой буквы в шаблонах и выражениях и рассматриваете узлы как если бы они находились в пространстве имен null, однако это не очень хорошо протестировано, поэтому это может не сработать во всех ситуациях. Также возможно, что это изменится в будущей версии.

Преобразование XHTML должно работать как ожидается.

Установка параметров

Вы можете управлять параметрами стильного файла с помощью методов XSLTProcessor.setParameter(), XSLTProcessor.getParameter() и XSLTProcessor.removeParameter(). Все они принимают URI пространства имен и локальное имя в качестве первых двух параметров, а XSLTProcessor.setParameter() принимает третий — значение устанавливаемого параметра. См. Интерфейс XSLT/JavaScript в Gecko для примера.

Сброс

Объект XSLTProcessor также реализует метод XSLTProcessor.reset(), который можно использовать для удаления всех стильных файлов и параметров, затем возвращает обработчик в исходное состояние. Этот метод реализован в Gecko 1.3 и более поздних версиях.

Ресурсы

Следующие отражают интерфейс объекта XSLTProcessor:

  • XSLTProcessor.webidl
  • txXSLTProcessor.cpp

См. также

  • Интерфейс XSLT JavaScript в Gecko
  • document.load() по поводу загрузки XML-документов (как используется выше)

Информация об исходном документе

  • Автор(ы): Майк Хирн
  • Дата последнего обновления: 21 декабря 2005 г.
  • Информация об авторских правах: Авторские права (C) Майк Хирн

© 2005–2022 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/XSLT/Using_the_Mozilla_JavaScript_interface_to_XSL_Transformations

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API