XslCompiledTransform Classe

Definizione

Trasforma i dati XML usando un foglio di stile XSLT.

public ref class XslCompiledTransform sealed
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("XslCompiledTransform requires dynamic code because it generates IL at runtime.")]
public sealed class XslCompiledTransform
public sealed class XslCompiledTransform
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("XslCompiledTransform requires dynamic code because it generates IL at runtime.")>]
type XslCompiledTransform = class
type XslCompiledTransform = class
Public NotInheritable Class XslCompiledTransform
Ereditarietà
XslCompiledTransform
Attributi

Esempio

Nell'esempio seguente viene eseguita una trasformazione e viene restituito un file.

// Load the style sheet.
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load("output.xsl");

// Execute the transform and output the results to a file.
xslt.Transform("books.xml", "books.html");
' Load the style sheet.
Dim xslt As New XslCompiledTransform()
xslt.Load("output.xsl")
        
' Execute the transform and output the results to a file.
xslt.Transform("books.xml", "books.html")

L'esempio usa i due file di input seguenti:

<?xml version='1.0'?>
<!-- This file represents a fragment of a book store inventory database -->
<bookstore>
  <book genre="autobiography" publicationdate="1981" ISBN="1-861003-11-0">
    <title>The Autobiography of Benjamin Franklin</title>
    <author>
      <first-name>Benjamin</first-name>
      <last-name>Franklin</last-name>
    </author>
    <price>8.99</price>
  </book>
  <book genre="novel" publicationdate="1967" ISBN="0-201-63361-2">
    <title>The Confidence Man</title>
    <author>
      <first-name>Herman</first-name>
      <last-name>Melville</last-name>
    </author>
    <price>11.99</price>
  </book>
  <book genre="philosophy" publicationdate="1991" ISBN="1-861001-57-6">
    <title>The Gorgias</title>
    <author>
      <name>Plato</name>
    </author>
    <price>9.99</price>
  </book>
</bookstore>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="bookstore">
  <HTML>
    <BODY>
      <TABLE BORDER="2">
        <TR>
          <TD>ISBN</TD>
          <TD>Title</TD>
          <TD>Price</TD>
        </TR>
        <xsl:apply-templates select="book"/>
      </TABLE>
    </BODY>
  </HTML>
</xsl:template>
<xsl:template match="book">
  <TR>
    <TD><xsl:value-of select="@ISBN"/></TD>
    <TD><xsl:value-of select="title"/></TD>
    <TD><xsl:value-of select="price"/></TD>
  </TR>
</xsl:template>
</xsl:stylesheet>

Commenti

La XslCompiledTransform classe è un processore XSLT che supporta la sintassi XSLT 1.0. Si tratta di una nuova implementazione e include miglioramenti delle prestazioni rispetto alla classe obsoleta XslTransform . La struttura della XslCompiledTransform classe è molto simile alla XslTransform classe . Il Load metodo carica e compila il foglio di stile, mentre il Transform metodo esegue la trasformazione XSLT.

Il supporto per la funzione XSLT document() e i blocchi di script incorporati sono disabilitati per impostazione predefinita. Queste funzionalità possono essere abilitate creando un XsltSettings oggetto e passandolo al Load metodo .

Per altre informazioni, vedere Uso della classe XslCompiledTransform e migrazione dalla classe XslTransform.

Considerazioni relative alla sicurezza

Quando si crea un'applicazione che usa la XslCompiledTransform classe , è necessario tenere presenti gli elementi seguenti e le relative implicazioni:

  • Lo scripting XSLT è disabilitato per impostazione predefinita. Gli script XSLT devono essere abilitati solo se è necessario il supporto dello script e si lavora in un ambiente completamente attendibile.

  • La funzione XSLT document() è disabilitata per impostazione predefinita. Se si abilita la document() funzione, limitare le risorse a cui è possibile accedere passando ThrowingResolver al Transform metodo .

  • Gli oggetti di estensione sono abilitati per impostazione predefinita. Se un XsltArgumentList oggetto contenente oggetti di estensione viene passato al Transform metodo , vengono utilizzati.

  • I fogli di stile XSLT possono includere riferimenti ad altri file e blocchi di script incorporati. Un utente malintenzionato può sfruttare questo problema fornendoti dati o fogli di stile che, quando vengono eseguiti, possono portare il tuo sistema a elaborare fino a quando il computer non esaurisce le risorse.

  • Le applicazioni XSLT eseguite in un ambiente di attendibilità mista possono comportare la manipolazione dei fogli di stile. Ad esempio, un utente malintenzionato può caricare un oggetto con un foglio di stile dannoso e consegnarlo a un altro utente che successivamente chiama il Transform metodo ed esegue la trasformazione.

Questi problemi di sicurezza possono essere mitigati non abilitando la creazione di script o la document() funzione a meno che il foglio di stile non provenga da un'origine attendibile e non accetti XslCompiledTransform oggetti, fogli di stile XSLT o dati di origine XML da un'origine non attendibile.

Costruttori

Nome Descrizione
XslCompiledTransform()

Inizializza una nuova istanza della classe XslCompiledTransform.

XslCompiledTransform(Boolean)

Inizializza una nuova istanza della XslCompiledTransform classe con l'impostazione di debug specificata.

Proprietà

Nome Descrizione
OutputSettings

Ottiene un XmlWriterSettings oggetto che contiene le informazioni di output derivate dall'elemento xsl:output del foglio di stile.

TemporaryFiles

Ottiene l'oggetto TempFileCollection contenente i file temporanei generati su disco dopo una chiamata riuscita al Load metodo .

Metodi

Nome Descrizione
CompileToType(XmlReader, XsltSettings, XmlResolver, Boolean, TypeBuilder, String)

Compila un foglio di stile XSLT in un tipo specificato.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene il Type dell'istanza corrente.

(Ereditato da Object)
Load(IXPathNavigable, XsltSettings, XmlResolver)

Compila il foglio di stile XSLT contenuto in IXPathNavigable. XmlResolver Risolve tutti gli elementi XSLT import o include e le impostazioni XSLT determinano le autorizzazioni per il foglio di stile.

Load(IXPathNavigable)

Compila il foglio di stile contenuto nell'oggetto IXPathNavigable .

Load(MethodInfo, Byte[], Type[])

Carica un metodo da un foglio di stile compilato utilizzando l'utilità XSLTC.exe .

Load(String, XsltSettings, XmlResolver)

Carica e compila il foglio di stile XSLT specificato dall'URI. XmlResolver Risolve tutti gli elementi XSLT import o include e le impostazioni XSLT determinano le autorizzazioni per il foglio di stile.

Load(String)

Carica e compila il foglio di stile che si trova nell'URI specificato.

Load(Type)

Carica il foglio di stile compilato creato usando il compilatore XSLT (xsltc.exe).

Load(XmlReader, XsltSettings, XmlResolver)

Compila il foglio di stile XSLT contenuto in XmlReader. XmlResolver Risolve tutti gli elementi XSLT import o include e le impostazioni XSLT determinano le autorizzazioni per il foglio di stile.

Load(XmlReader)

Compila il foglio di stile contenuto in XmlReader.

MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(Ereditato da Object)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)
Transform(IXPathNavigable, XmlWriter)

Esegue la trasformazione usando il documento di input specificato dall'oggetto IXPathNavigable e restituisce i risultati in un oggetto XmlWriter.

Transform(IXPathNavigable, XsltArgumentList, Stream)

Esegue la trasformazione usando il documento di input specificato dall'oggetto IXPathNavigable e restituisce i risultati in un flusso. fornisce XsltArgumentList argomenti di runtime aggiuntivi.

Transform(IXPathNavigable, XsltArgumentList, TextWriter)

Esegue la trasformazione usando il documento di input specificato dall'oggetto IXPathNavigable e restituisce i risultati in un oggetto TextWriter. fornisce XsltArgumentList argomenti di runtime aggiuntivi.

Transform(IXPathNavigable, XsltArgumentList, XmlWriter, XmlResolver)

Esegue la trasformazione utilizzando il documento di input specificato dall'oggetto IXPathNavigable e restituisce i risultati in un oggetto XmlWriter. fornisce XsltArgumentList argomenti di runtime aggiuntivi e risolve XmlResolver la funzione XSLT document() .

Transform(IXPathNavigable, XsltArgumentList, XmlWriter)

Esegue la trasformazione usando il documento di input specificato dall'oggetto IXPathNavigable e restituisce i risultati in un oggetto XmlWriter. fornisce XsltArgumentList argomenti di runtime aggiuntivi.

Transform(String, String)

Esegue la trasformazione usando il documento di input specificato dall'URI e restituisce i risultati in un file.

Transform(String, XmlWriter)

Esegue la trasformazione usando il documento di input specificato dall'URI e restituisce i risultati in un oggetto XmlWriter.

Transform(String, XsltArgumentList, Stream)

Esegue la trasformazione usando il documento di input specificato dall'URI e restituisce i risultati da trasmettere. fornisce XsltArgumentList argomenti di runtime aggiuntivi.

Transform(String, XsltArgumentList, TextWriter)

Esegue la trasformazione usando il documento di input specificato dall'URI e restituisce i risultati a un oggetto TextWriter.

Transform(String, XsltArgumentList, XmlWriter)

Esegue la trasformazione usando il documento di input specificato dall'URI e restituisce i risultati in un oggetto XmlWriter. fornisce XsltArgumentList argomenti di runtime aggiuntivi.

Transform(XmlReader, XmlWriter)

Esegue la trasformazione usando il documento di input specificato dall'oggetto XmlReader e restituisce i risultati in un oggetto XmlWriter.

Transform(XmlReader, XsltArgumentList, Stream)

Esegue la trasformazione usando il documento di input specificato dall'oggetto XmlReader e restituisce i risultati in un flusso. fornisce XsltArgumentList argomenti di runtime aggiuntivi.

Transform(XmlReader, XsltArgumentList, TextWriter)

Esegue la trasformazione usando il documento di input specificato dall'oggetto XmlReader e restituisce i risultati a un oggetto TextWriter. fornisce XsltArgumentList argomenti di runtime aggiuntivi.

Transform(XmlReader, XsltArgumentList, XmlWriter, XmlResolver)

Esegue la trasformazione usando il documento di input specificato dall'oggetto XmlReader e restituisce i risultati in un oggetto XmlWriter. fornisce XsltArgumentList argomenti di runtime aggiuntivi e XmlResolver risolve la funzione XSLT document() .

Transform(XmlReader, XsltArgumentList, XmlWriter)

Esegue la trasformazione usando il documento di input specificato dall'oggetto XmlReader e restituisce i risultati in un oggetto XmlWriter. fornisce XsltArgumentList argomenti di runtime aggiuntivi.

Si applica a

Thread safety

L'oggetto XslCompiledTransform è thread-safe dopo il caricamento. In altre parole, dopo il completamento del Load metodo, il Transform metodo può essere chiamato simultaneamente da più thread.

Se il Load metodo viene chiamato di nuovo in un thread mentre il Transform metodo viene chiamato in un altro thread, l'oggetto XslCompiledTransform termina l'esecuzione della Transform chiamata continuando a usare lo stato precedente. Il nuovo stato viene utilizzato quando il Load metodo viene completato correttamente.

Il Load metodo non è thread-safe quando viene chiamato simultaneamente da più thread.

Vedi anche