Condividi tramite


Elemento <xsl:template>

Definisce un modello riutilizzabile per la generazione dell'output desiderato per nodi di tipo o contesto particolare.

<xsl:template
  name= Qname
  match = Pattern
  priority = number
  mode = QName
</xsl:template>

Attributi

  • name
    Il Nomi qualificati da espandere. Se è presente un prefisso, questo viene espanso in un riferimento URI (Uniform Resource Identifier) utilizzando le dichiarazioni dello spazio dei nomi attivate nell'attributo in cui è presente il nome. Il nome espanso, costituito dalla parte locale del nome e possibilmente dal riferimento URI null, viene utilizzato come nome del modello. Lo spazio dei nomi predefinito non viene utilizzato per i nomi senza prefisso. Se un elemento <xsl:template> dispone di un attributo name può, ma non necessariamente deve, disporre anche di un attributo match.
  • match
    Un Pattern che identifica il nodo o i nodi di origine a cui viene applicata la regola. L'attributo match è obbligatorio a meno che l'elemento <xsl:template> non abbia un attributo name. Il contenuto dell'elemento <xsl:template> è il modello per cui è stata creata un'istanza quando viene applicata la regola di modello.
  • priority
    Il numero di priorità per il modello. Tutte le regole di modello corrispondenti con una priorità più bassa rispetto alle regole di modello corrispondenti con la priorità più alta non vengono tenute in considerazione. Il valore deve corrispondere a un numero reale compreso tra 0 e 9, positivo o negativo, corrispondente al numero di produzione con un segno meno (-) iniziale facoltativo. La priorità predefinita viene calcolata nel modo seguente:

    • Se il pattern contiene più alternative separate da |, viene considerato allo stesso modo di un insieme di regole di modello, una per ciascuna alternativa.

    • Se il pattern ha la forma di un nome completo (QName) preceduto da uno specificatore di asse figlio o attributo o ha la forma di una rappresentazione formale di istruzione di elaborazione preceduta da uno specificatore di asse figlio o attributo, la priorità è 0.

    • Se il pattern è un nome preceduto da uno specificatore di asse figlio o attributo, la priorità è -0,25.

    • In caso contrario, se il pattern consiste in una verifica del nodo preceduta da uno specificatore di asse figlio o attributo, la priorità è -0,5.

    • In caso contrario, la priorità è 0,5.

    In questo modo, il tipo di modello più comune (un modello che verifica un nodo con un tipo e un nome espanso particolari) ha priorità 0. Il successivo tipo di modello meno specifico (un modello che verifica un nodo con un tipo particolare e un nome espanso con un URI dello spazio dei nomi particolare) ha priorità -0,25. Pattern meno specifici di questo (pattern che verificano i nodi con tipi particolari) hanno priorità -0,5. Pattern più specifici del tipo di pattern più comune hanno prorità 0,5.

  • mode
    Il valore del modo. Questo valore consente di elaborare più volte un elemento, producendo ogni volta un risultato diverso. Se <xsl:template> non ha un attributo match, non deve avere un attributo mode. Se un elemento <xsl:apply-templates> ha un attributo mode, può essere applicato solo alle regole di modello da elementi <xsl:template> che hanno un attributo mode con lo stesso valore. Se un elemento <xsl:apply-templates> non ha un attributo mode, può essere applicato solo alle regole di modello da elementi <xsl:template> che non hanno un attributo mode.

Informazioni sull'elemento

Numero di occorrenze

Illimitato

Elementi padre

xsl:stylesheet, xsl:transform

Elementi figlio

xsl:apply-imports,xsl:apply-templates, xsl:attribute, xsl:call-template, xsl:choose, xsl:comment, xsl:copy, xsl:copy-of, xsl:element, xsl:fallback, xsl:for-each, xsl:if, xsl:message, xsl:number, xsl:param, xsl:processing-instruction, xsl:text, xsl:value-of, xsl:variable, elementi di output

Osservazioni

Notare che non è necessario per il modello generare un documento XML completo (compreso il modello radice, a meno che non si utilizzi transformNodeToObject), ma è sufficiente un frammento di XML. È possibile includere il testo non incluso o più elementi documento definiti dal modello. Ciò semplifica la generazione di testo non elaborato e frammenti XML che possono essere ulteriormente elaborati da un'applicazione (ad esempio, frammenti HTML inseriti in una pagina HTML).

Il valore dell'attributo name è un nome completo espanso. Se è presente un prefisso, questo viene espanso in un riferimento URI utilizzando le dichiarazioni dello spazio dei nomi attivate sull'attributo in cui è presente il nome. Il nome espanso, costituito dalla parte locale del nome e possibilmente dal riferimento URI null, viene utilizzato come nome del modello. Lo spazio dei nomi predefinito non viene utilizzato per i nomi senza prefisso.

Se un elemento <xsl:template> dispone di un attributo name può, ma non necessariamente deve, disporre anche di un attributo match. Un elemento <xsl:call-template> richiama un modello in base al nome e dispone di un attributo obbligatorio name che identifica il modello da richiamare. Diversamente da <xsl:apply-templates>, <xsl:call-template> non modifica il nodo corrente o l'elenco dei nodi correnti.

Se un foglio di stile contiene più modelli con lo stesso nome, si verifica un errore.

Esempio

Questa regola di modello presenta un pattern che identifica elementi <stock> e genera un elemento di output <DIV> con l'attributo STYLE="font-weight:bold":

File XML (portfolio.xml)

File XSLT (templ.xsl)

Output

L'output formattato è il seguente:

Symbol: ZCXM, Price: 28.875

Symbol: ZFFX, Price: 92.250

Symbol: ZYSZ, Price: 20.313