Condividi tramite


Creazione di file XSLT

Per formattare le notifiche, il formattatore del contenuto utilizza uno o più file XSLT per ogni classe di notifica. I file XSLT vengono definiti per trasformare i dati XML intermedi per ogni notifica in un messaggio formattato.

Dati XML intermedi

Per ogni notifica, il server di distribuzione converte la notifica non elaborata in un documento XML. Per tutte le notifiche diverse dalle notifiche digest, il documento XML è simile al seguente:

<notifications>
    <notification>
        <FieldName>value</FieldName>
        <FieldName>value</FieldName>
        ...
    </notification>
</notifications>

I nomi degli elementi presenti in un elemento notification riflettono i nomi dei campi della notifica, come specificato nella definizione dell'applicazione e i loro valori sono i valori dei campi della notifica. I dati della notifica sono composti da campi di notifica provenienti dalla tabella delle notifiche oppure campi di notifica calcolati.

Ad esempio, il server di distribuzione può generare il documento XML seguente per una notifica relativa alle azioni di borsa:

<notifications>
    <notification>
        <StockSymbol>AWKS</StockSymbol>
        <StockPrice>55.02</StockPrice>
    </notification>
</notifications>

Per una notifica digest, vengono aggiunti altri elementi notification allo schema:

<notifications>
    <notification>
        <FieldName>value</FieldName>
        ...
    </notification>
    <notification>
        <FieldName>value</FieldName>
        ...
    </notification>
</notifications>

Tutti i valori presenti nel documento XML intermedio sono stringhe e non c'è modo di garantire l'ordine dei campi delle notifiche nel documento XML.

Tutti i valori dei campi nel documento XML intermedio che rappresentano una data o un numero sono nel formato appropriato per le impostazioni internazionali della notifica. Ad esempio, una data per le impostazioni Inglese-Stati Uniti ha il formato MM/GG/AAAA, mentre una data per le impostazioni internazionali Italiano-Italia ha il formato GG/MM/AAAA. È compito dello sviluppatore dell'applicazione eseguire le operazioni di conversione o trasformazione aggiuntive per il contenuto della notifica.

Trasformazioni XSL

Notification Services non convalida il file XSLT, né applica limitazioni alle trasformazioni. La trasformazione deve generare un documento XML o di testo valido. Tuttavia, con queste due opzioni, è possibile generare quasi qualsiasi tipo di documento.

Se si desidera generare un documento HTML per i dati della notifica sopra riportati, è possibile creare la trasformazione XSL seguente:

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="notifications">
    <html>
        <body>
            <xsl:apply-templates/>
            <i>Thank you for using SQL Server 
               Notification Services.</i>
        </body>
    </html>
    </xsl:template>
    <xsl:template match="notification">
        <b><xsl:value-of select="StockSymbol" /></b> 
            is now trading at: <b>
            $<xsl:value-of select="StockPrice" /></b><br/>
        <br/><br/>
    </xsl:template>
</xsl:stylesheet>

Creazione di un documento di testo

Per impostazione predefinita, il formattatore del contenuto XSLT genera documenti XML validi. Ne consegue che i caratteri seguenti vengono scritti come riferimenti a entità: > (&gt;), < (&lt;), ' (&apos;), " (&quot;) e & (&amp;).

È possibile configurare il formattatore in modo che generi un output di testo se si include l'elemento xsl:output nel file XSLT. L'esempio riportato di seguito rappresenta una trasformazione XSL che restituisce il contenuto esatto inviato, senza eseguire trasformazioni.

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" 
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
    <xsl:template match="*">
    Today&apos;s Notifications:
        <xsl:copy-of select = "." />
    </xsl:template>
</xsl:stylesheet>

Suggerimenti sui file XSLT

I suggerimenti seguenti possono risultare utili per lo sviluppo di un file XSLT.

  • Nel codice riportato di seguito viene illustrato come creare un file XSLT che restituisce semplicemente il documento XML intermedio generato dal server di distribuzione a partire dai dati delle notifiche non elaborati. Con questa trasformazione, il formattatore del contenuto non esegue in realtà alcuna trasformazione e passa semplicemente i dati delle notifiche non elaborati. L'utilizzo di questa trasformazione pass-through può aiutare a verificare il documento XML e creare file XSLT con gli strumenti di sviluppo preferiti:

    <?xml version="1.0" encoding="UTF-8" ?>
    <xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="*">
        <xsl:copy-of select = "." />
    </xsl:template>
    </xsl:stylesheet>
    
  • Utilizzare l'attributo indent dell'elemento xsl:output per impostare un rientro automatico per il codice XML:

    <xsl:output method="xml" indent="yes"/>
    
  • Se i dati dell'evento contengono riferimenti a entità o frammenti XML, impostare l'attributo DisableEscaping del formattatore del contenuto su true, in modo che il formattatore del contenuto non trasformi eccessivamente i dati, ad esempio convertendo &amp; in &amp;amp;. Per ulteriori informazioni sull'attributo DisableEscaping, vedere Definizione del formattatore del contenuto XSLT.

  • Se i dati degli eventi contengono caratteri riservati, ad esempio &, impostare l'attributo DisableEscaping del formattatore del contenuto su false, in modo che il formattatore del contenuto converta i caratteri riservati in codice XML valido prima della trasformazione finale. Per ulteriori informazioni, vedere XML Reserved Characters.

Vedere anche

Concetti

Posizione dei file XSLT
Definizione del formattatore del contenuto XSLT
Configurazione dei formattatori del contenuto

Altre risorse

Definizione delle classi di notifica
Definizione di applicazioni di Notification Services

Guida in linea e informazioni

Assistenza su SQL Server 2005