2009-02-24 24 views
13

Come posso ottenere il nome del file usando xsl 1.0?Ottieni nome file usando xsl

ho cercato

<xsl:value-of select="base-uri()" /> 

ma ottenuto "Fatal Error Impossibile trovare la funzione: base-uri"

risposta

15

Non esiste una funzione di XPath, o estensione XSLT per la funzione XPath per fare questo in XSLT v1/XPath v1.

È possibile che non ci sia alcun file e anche se non esiste alcun motivo per il motore XSLT di avere quel nome di file (si consideri di caricare il contenuto del file in un buffer, analizzando il buffer in un DOM e quindi passando il DOM al processore XSLT).

È necessario passare il nome file nel processore per essere disponibile come parametro nella trasformazione.

+0

Fastidioso se vuoi solo un commento 'creato usando fogli di stile x' :-( –

+4

-1: esiste una funzione simile, in XPath 2.0 (vedi t l'altra risposta) –

+2

@NormanGray: la fine della domanda chiarisce che questo è XSLT v1, quindi la presenza di tale funzione V2 è irrilevante. – Richard

30

base-uri() è una funzione XPath 2.0 standard, quindi quando si esegue XSLT 1.0 questa funzione non sarà disponibile.

In XSLT 1.0 il nome file (di cosa?) Può essere passato come parametro per la trasformazione.

Do atto che non è sempre possibile produrre un nome di file per un foglio di stile o per un documento XML - uno o entrambi possono essere memorizzate nella memoria, senza un file associato.

Non è chiaro dal problema quale nome del file deve essere prodotto.

Ecco come trovare i nomi dei file in XPath 2.0/XSLT 2.0:

Il nome del file del documento corrente:

base-uri() 

Il nome del file del modulo foglio di stile corrente:

base-uri(document('')) 
Problemi correlati