XSLT-расширения
G_Z 01.03.2008 15:57
Товарищи, предлагаю обсудить вопрос XSLT-расширений в Парсере.
Сейчас есть такая штука как
parser://, которая позволяет делать любопытные вещи.
А именно, расширить функционал XSL и XPath функциями Парсера.
К сожалению, в задачи подобного вызова не входило что-то сложнее передачи строки.
В результате, сделать мало-мальски серьёзное таким образом не получится.
Однако, даже тривиальное применение демонстрирует всю мощь механизма расширений.
Можно сгенерировать случайное значение, идентификатор, отформатировать дату и сделать массу других приятных мелочей, реализовать которые средствами XSL затруднительно или, вовсе, невозможно.
При этом, вызовы пойдут Парсеру прямо во время трансформации, что позволяет делать множество ресурсоёмких вещей.
Но, к ограничению на передачу строки, укладывающууюся в требование к URL и именованию методов/переменных Парсера, добавляется ограничение на вызов метода класса MAIN, что не всегда удобно.
Обработать же, к примеру, BASE64 закодированные данные в теле документа вообще не представляется возможным, передав значение в метод.
Только обходными путями.
Сама идеология расширений штука отличная, и уже нашедшая реализацию в других языках.
Что предлагаю сделать.
Реализовать ассоциацию некоторых пространств имён с вызовом методов классов и передачу им параметров.
В итоге, получить механизм расширений, напоминающий
оный в Java.
Т.е. обработка узла с заданным пространсвом имён приведёт к вызову метода класса (с возможным созданием объекта или статическим вызовом) и передаче значения методу.
Библиотека LibXSL, используемая в Паресере, поддерживает расширения, и
реализация возможна (со слов воспринимающих исходники людей, к которым я не отношусь).
Как резонно заметил PAF в письме, можно для начала остановиться на string и node-типах данных, которые будут передаваться методу.
Sumo согласился помочь с попыткой реализации подобного механизма.
Если у кого есть мысли, замечания и предложения по существу — было бы любопытно послушать.
Если кто реально работал с расширениями в Java или
C#, к вам огромная просьба изложить реальные возможности и возможные недостатки тамошней реализации.
- XSLT-расширения, G_Z [M] 01.03.2008 15:57