\XgapODFXSLTProcessorExt

Extensiones a la clase ODFXSLTProcessor.

Summary

Methods
Properties
Constants
__construct()
getProcessor()
appendXsltFragment()
addPredefinedTemplates()
loadXmlErrorHandler()
appendXmlFragmentImpl()
registerDomPreprocessor()
domPreprocessorImpl()
No public properties found
No constants found
No protected methods found
$processor
$dom_preprocessors
N/A
No private methods found
No private properties found
N/A

Properties

$dom_preprocessors

$dom_preprocessors : array

Type

array

Methods

__construct()

__construct(\ODFXSLTProcessor  $processor) 

Parameters

\ODFXSLTProcessor $processor

Throws

\InvalidArgumentException

si $processor no es una instancia de ODFXSLTProcessor

getProcessor()

getProcessor() : \ODFXSLTProcessor

Retorna el procesador asociado a este objeto.

Returns

\ODFXSLTProcessor

appendXsltFragment()

appendXsltFragment(string  $code) 

Agrega un fragmento de código XSLT a la plantilla que procesa las entradas ODF, como hijo del elemento raíz xslt:stylesheet.

Puede contener uno o más elementos que sean válidos en ese contexto. Este código queda disponible para usar en los bloques de código XSLT dentro de los ODF.

Importante: Los elementos XSLT deben usar el namespace xslt, que ya está definido. Si el código dado usa otros namespaces, se deben definir en el/los elemento/s raíz del fragmento.

Ejemplo: template

$code = <<<C
  <xslt:template xmlns:text="{$processor->xmlns['text']}" name="ejemplo">
    <xslt:param name="h" select="."/>
    <text:h text:outline-level="2"><xslt:value-of select="$h"></text:h>
    <!-- resto del codigo -->
  </xslt:template>
C;

Ahora se puede usar este template dentro de una plantilla ODF; por ejemplo:

{@replace .
  <xslt:call-template name="ejemplo">
    <xslt:with-param name="src" select='e1/e2/@a'/>
  </xslt:call-template>
}

Parameters

string $code

el código del template; debe ser uno o más elementos XSLT válidos

addPredefinedTemplates()

addPredefinedTemplates() 

Agrega templates XSLT predefinidos, para que queden disponibles en los bloques de código XSLT dentro de los ODF.

Por el momento sólo hay uno:

<xslt:template name="eol-to-line-break">
  <xslt:param name="src" select="."/>
</xslt:template>

Este template emite el valor del parámetro $src, convirtiendo los fines de línea (LF | CR+LF) a saltos de línea ODF (text:line-break).

loadXmlErrorHandler()

loadXmlErrorHandler(integer  $errno, string  $errstr,   $errfile,   $errline) 

Error handler.

Es necesario porque la carga de XML (DOMDocument::loadXML() y DOMDocumentFragment::appendXML()) emite warnings cuando el XML está mal formado.

No invocar. Es público porque así lo requiere PHP para poder usarlo.

Parameters

integer $errno
string $errstr
$errfile
$errline

Throws

\ErrorException

appendXmlFragmentImpl()

appendXmlFragmentImpl(\DOMDocument  $dom, \ODFXSLTProcessor  $processor, string  $code) 

Callback para {@link XgapODFXSLTProcessorExt::registerDomPreprocessor()}.

No invocar. Es público porque así lo requiere PHP para poder usarlo.

Parameters

\DOMDocument $dom
\ODFXSLTProcessor $processor
string $code

Throws

\ExcepcionXGAP

si el fragmento no se puede agregar

registerDomPreprocessor()

registerDomPreprocessor(callback  $callback, mixed  $user_data = null) 

Registra con el procesador ODFXSLTProcessor un preprocesador que opera sobre el DOM.

Este preprocesador recibe el DOM de la plantilla a procesar, a diferencia de los que se registran directamente con ODFXSLTProcessor, los cuales reciben el texto XML.

Todos los preprocesadores registrados en una instancia de esta clase a través de este método trabajan con el mismo objeto DOM por cada archivo de la plantilla ODF, por lo cual la conversión de texto XML a DOM se realiza una sola vez por archivo, evitando rehacer este paso cuando se regitran varios preprocesadores.

Parameters

callback $callback

la función o método a invocar; debe tener la forma:

void function (DOMDocument $dom, ODFXSLTProcessor $processor, $user_data); debe operar sobre $dom; cualquier valor de retorno es ignorado
mixed $user_data

una variable arbitraria para pasar al callback cuando se invoque

Throws

\InvalidArgumentException

si $callback no es invocable

domPreprocessorImpl()

domPreprocessorImpl(string  $raw_xml, \ODFXSLTProcessor  $processor,   $user_data) : string

Callback para {@link ODFXSLTProcessor::register_preprocessor()}.

No invocar. Es público porque así lo requiere PHP para poder usarlo.

Parameters

string $raw_xml
\ODFXSLTProcessor $processor
$user_data

Returns

string