Главная » XSLT » Реализация элемента расширения на языке Java

0

<xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

xmlns:xalan="http://xml.apache.org/xslt"

xmlns:MyExt="xalan://com.AcmeX.MyExtensionElement">

extension-element-prefixes="MyExt">

<xalan:component prefix="MyExt" elements="superExtension">

<xalan:script lang="javasclass"

src=" xalan:// com.AcmeX.MyExtensionElement"/>

</xalan:component>

<xsl:template match="*">

<myExt:superExtension attr1="val1" attr2="val2"> <!– … –> <myExt:superExtension>

</xsl:template>

</xsl:stylesheet>

Реализация должна иметь вид Java-класса, в котором есть метод с такой сиг­натурой:

public class com.AcmeX.MyExtensionElement {

public SomeType superExtension(

org.apache.xalan.extensions.XSLProcessorContext ctx, org.apache.xalan.templates.ElemExtensionCall extensionElement)

{

//…

}

}

где SomeType – тип возвращаемого значения, ctx – объект, представляющий кон­текст обработки, а extensionElement – узел, соответствующий элементу расшире­ния в таблице стилей. В сигнатуре метода можно указывать и суперклассы упомянутых типов. Базовым классом для класса com.AcmeX.MyExtensionElement может быть все, что угодно; его может и вовсе не быть, как показано в примере выше.

Результат, который возвращает этот метод, помещается в результирую­щее дерево; если вы не хотите его модифицировать, задавайте для метода тип void. Дополнительную информацию о классах XSLProcessorContext и ElemExtensionCall.

Мангано Сэл  XSLT. Сборник рецептов. – М.: ДМК Пресс, СПБ.: БХВ-Петербург, 2008. – 864 с.: ил.

По теме:

  • Комментарии