XslCompiledTransform Třída

Definice

Transformuje data XML pomocí šablony stylů 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
Dědičnost
XslCompiledTransform
Atributy

Příklady

Následující příklad provede transformaci a výstupy do souboru.

// 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")

Ukázka používá následující dva vstupní soubory:

<?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>

Poznámky

Třída XslCompiledTransform je procesor XSLT, který podporuje syntaxi XSLT 1.0. Jedná se o novou implementaci a zahrnuje zvýšení výkonu ve srovnání s zastaralou XslTransform třídou. Struktura XslCompiledTransform třídy je velmi podobná XslTransform třídě. Metoda Load načte a zkompiluje šablonu stylů, zatímco Transform metoda provede transformaci XSLT.

Podpora funkcí XSLT document() a bloků vložených skriptů jsou ve výchozím nastavení zakázána. Tyto funkce lze povolit vytvořením objektu XsltSettings a jeho předáním metodě Load .

Další informace naleznete v tématu Použití třídy XslCompiledTransform a migrace z třídy XslTransform.

Bezpečnostní aspekty

Při vytváření aplikace, která používá XslCompiledTransform třídu, byste měli vědět o následujících položkách a jejich dopadech:

  • Skriptování XSLT je ve výchozím nastavení zakázané. Skriptování XSLT by mělo být povolené jenom v případě, že potřebujete podporu skriptů a pracujete v plně důvěryhodném prostředí.

  • Funkce XSLT document() je ve výchozím nastavení zakázaná. Pokud funkci povolíte document() , omezte prostředky, ke kterým je možné přistupovat předáním ThrowingResolver metody Transform .

  • Objekty rozšíření jsou ve výchozím nastavení povolené. XsltArgumentList Pokud je objekt obsahující rozšiřující objekt předán metoděTransform, jsou využívány.

  • Šablony stylů XSLT mohou obsahovat odkazy na jiné soubory a vložené bloky skriptů. Uživatel se zlými úmysly to může zneužít tím, že vám poskytne data nebo šablony stylů, které při spuštění můžou způsobit, že systém bude zpracovávat, dokud počítač nebude mít málo prostředků.

  • Aplikace XSLT, které běží v prostředí smíšené důvěryhodnosti, můžou vést k falšování identity šablon stylů. Uživatel se zlými úmysly může například načíst objekt se škodlivou šablonou stylů a předat ho jinému uživateli, který metodu Transform následně zavolá a provede transformaci.

Tyto problémy se zabezpečením je možné zmírnit tím, že nepovolí skriptování nebo document() funkci, pokud šablona stylů nepochází z důvěryhodného zdroje a nepřijme XslCompiledTransform objekty, šablony stylů XSLT nebo zdrojová data XML z nedůvěryhodného zdroje.

Konstruktory

Name Description
XslCompiledTransform()

Inicializuje novou instanci XslCompiledTransform třídy.

XslCompiledTransform(Boolean)

Inicializuje novou instanci XslCompiledTransform třídy se zadaným nastavením ladění.

Vlastnosti

Name Description
OutputSettings

XmlWriterSettings Získá objekt, který obsahuje výstupní informace odvozené od xsl:output prvku šablony stylů.

TemporaryFiles

TempFileCollection Získá, který obsahuje dočasné soubory vygenerované na disku po úspěšném volání Load metody.

Metody

Name Description
CompileToType(XmlReader, XsltSettings, XmlResolver, Boolean, TypeBuilder, String)

Zkompiluje šablonu stylů XSLT na zadaný typ.

Equals(Object)

Určuje, zda je zadaný objekt roven aktuálnímu objektu.

(Zděděno od Object)
GetHashCode()

Slouží jako výchozí funkce hash.

(Zděděno od Object)
GetType()

Získá Type aktuální instance.

(Zděděno od Object)
Load(IXPathNavigable, XsltSettings, XmlResolver)

Zkompiluje šablonu stylů XSLT obsaženou v souboru IXPathNavigable. Řeší XmlResolver všechny XSLT import nebo include prvky a nastavení XSLT určuje oprávnění pro šablonu stylů.

Load(IXPathNavigable)

Zkompiluje šablonu stylů obsaženou v objektu IXPathNavigable .

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

Načte metodu ze šablony stylů zkompilované pomocí XSLTC.exe nástroje.

Load(String, XsltSettings, XmlResolver)

Načte a zkompiluje šablonu stylů XSLT určenou identifikátorem URI. Řeší XmlResolver všechny XSLT import nebo include prvky a nastavení XSLT určuje oprávnění pro šablonu stylů.

Load(String)

Načte a zkompiluje šablonu stylů umístěnou v zadaném identifikátoru URI.

Load(Type)

Načte zkompilovanou šablonu stylů vytvořenou pomocí kompilátoru XSLT (xsltc.exe).

Load(XmlReader, XsltSettings, XmlResolver)

Zkompiluje šablonu stylů XSLT obsaženou v souboru XmlReader. Řeší XmlResolver všechny XSLT import nebo include prvky a nastavení XSLT určuje oprávnění pro šablonu stylů.

Load(XmlReader)

Zkompiluje šablonu stylů obsaženou v souboru XmlReader.

MemberwiseClone()

Vytvoří mělkou kopii aktuálního Object.

(Zděděno od Object)
ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)
Transform(IXPathNavigable, XmlWriter)

Provede transformaci pomocí vstupního dokumentu určeného objektem IXPathNavigable a vypíše výsledky do objektu XmlWriter.

Transform(IXPathNavigable, XsltArgumentList, Stream)

Provede transformaci pomocí vstupního dokumentu určeného objektem IXPathNavigable a vypíše výsledky do datového proudu. Poskytuje XsltArgumentList další argumenty modulu runtime.

Transform(IXPathNavigable, XsltArgumentList, TextWriter)

Provede transformaci pomocí vstupního dokumentu určeného objektem IXPathNavigable a vypíše výsledky do objektu TextWriter. Poskytuje XsltArgumentList další argumenty za běhu.

Transform(IXPathNavigable, XsltArgumentList, XmlWriter, XmlResolver)

Provede transformaci pomocí vstupního dokumentu určeného IXPathNavigable objektem a výstupem výsledků do objektu XmlWriter. Poskytuje XsltArgumentList další argumenty za běhu a XmlResolver přeloží funkci XSLT document() .

Transform(IXPathNavigable, XsltArgumentList, XmlWriter)

Provede transformaci pomocí vstupního dokumentu určeného objektem IXPathNavigable a vypíše výsledky do objektu XmlWriter. Poskytuje XsltArgumentList další argumenty za běhu.

Transform(String, String)

Provede transformaci pomocí vstupního dokumentu určeného identifikátorem URI a vypíše výsledky do souboru.

Transform(String, XmlWriter)

Provede transformaci pomocí vstupního dokumentu určeného identifikátorem URI a vypíše výsledky do objektu XmlWriter.

Transform(String, XsltArgumentList, Stream)

Provede transformaci pomocí vstupního dokumentu určeného identifikátorem URI a výstupem výsledků streamu. Poskytuje XsltArgumentList další argumenty za běhu.

Transform(String, XsltArgumentList, TextWriter)

Provede transformaci pomocí vstupního dokumentu určeného identifikátorem URI a vypíše výsledky do TextWriter.

Transform(String, XsltArgumentList, XmlWriter)

Provede transformaci pomocí vstupního dokumentu určeného identifikátorem URI a vypíše výsledky do objektu XmlWriter. Poskytuje XsltArgumentList další argumenty za běhu.

Transform(XmlReader, XmlWriter)

Provede transformaci pomocí vstupního dokumentu určeného objektem XmlReader a vypíše výsledky do objektu XmlWriter.

Transform(XmlReader, XsltArgumentList, Stream)

Provede transformaci pomocí vstupního dokumentu určeného objektem XmlReader a vypíše výsledky do datového proudu. Poskytuje XsltArgumentList další argumenty za běhu.

Transform(XmlReader, XsltArgumentList, TextWriter)

Provede transformaci pomocí vstupního dokumentu určeného objektem XmlReader a vypíše výsledky do objektu TextWriter. Poskytuje XsltArgumentList další argumenty za běhu.

Transform(XmlReader, XsltArgumentList, XmlWriter, XmlResolver)

Provede transformaci pomocí vstupního dokumentu určeného objektem XmlReader a vypíše výsledky do objektu XmlWriter. Poskytuje XsltArgumentList další argumenty za běhu a XmlResolver překládá funkci XSLT document() .

Transform(XmlReader, XsltArgumentList, XmlWriter)

Provede transformaci pomocí vstupního dokumentu určeného objektem XmlReader a vypíše výsledky do objektu XmlWriter. Poskytuje XsltArgumentList další argumenty za běhu.

Platí pro

Bezpečný přístup z více vláken

Objekt XslCompiledTransform je po načtení objektu bezpečný. Jinými slovy, po Load úspěšném dokončení metody lze metodu Transform volat současně z více vláken.

Load Pokud je metoda volána znovu v jednom vlákně, zatímco Transform metoda je volána v jiném vlákně, XslCompiledTransform objekt dokončí provádění Transform volání pokračováním v používání starého stavu. Nový stav se použije při Load úspěšném dokončení metody.

Metoda Load není bezpečná pro přístup z více vláken, pokud je volána současně.

Viz také