XslTransform Klasa

Definicja

Przestroga

This class has been deprecated. Please use System.Xml.Xsl.XslCompiledTransform instead. http://go.microsoft.com/fwlink/?linkid=14202

Przekształca dane XML przy użyciu rozszerzonego arkusza stylów języka przekształceń (XSLT).

public ref class XslTransform sealed
public sealed class XslTransform
[System.Obsolete("This class has been deprecated. Please use System.Xml.Xsl.XslCompiledTransform instead. http://go.microsoft.com/fwlink/?linkid=14202")]
public sealed class XslTransform
type XslTransform = class
[<System.Obsolete("This class has been deprecated. Please use System.Xml.Xsl.XslCompiledTransform instead. http://go.microsoft.com/fwlink/?linkid=14202")>]
type XslTransform = class
Public NotInheritable Class XslTransform
Dziedziczenie
XslTransform
Atrybuty

Przykłady

Poniższy przykład przekształca określony dokument XML i zwraca wynik do konsoli.

//Create a new XslTransform object.
XslTransform xslt = new XslTransform();

//Load the stylesheet.
xslt.Load("http://server/favorite.xsl");

//Create a new XPathDocument and load the XML data to be transformed.
XPathDocument mydata = new XPathDocument("inputdata.xml");

//Create an XmlTextWriter which outputs to the console.
XmlWriter writer = new XmlTextWriter(Console.Out);

//Transform the data and send the output to the console.
xslt.Transform(mydata,null,writer, null);
'Create a new XslTransform object.
Dim xslt As New XslTransform()

'Load the stylesheet.
xslt.Load(CType("http://server/favorite.xsl", String))

'Create a new XPathDocument and load the XML data to be transformed.
Dim mydata As New XPathDocument("inputdata.xml")

'Create an XmlTextWriter which outputs to the console.
Dim writer As New XmlTextWriter(Console.Out)

'Transform the data and send the output to the console.
xslt.Transform(mydata, Nothing, writer, Nothing)

Uwagi

XslTransform obsługuje składnię XSLT 1.0. Arkusz stylów XSLT musi używać przestrzeni nazw http://www.w3.org/1999/XSL/Transform.

Dodatkowe argumenty można również dodać do arkusza stylów przy użyciu XsltArgumentList klasy . Ta klasa zawiera parametry wejściowe dla arkusza stylów i obiektów rozszerzeń, które mogą być wywoływane z arkusza stylów.

Aby przekształcić dane XML:

  1. XslTransform Utwórz obiekt.

  2. Load Użyj metody , aby załadować arkusz stylów do przekształcenia. Ta metoda ma kilka przeciążeń i może załadować arkusz stylów przy użyciu XmlReaderadresu URL , XPathNavigator, IXPathNavigablelub adresu URL z lokalizacją pliku.

  3. Transform Użyj metody , aby przekształcić dane XML. Ta metoda ma kilka przeciążeń i może obsługiwać różne typy danych wejściowych i wyjściowych. Można również określić XsltArgumentList zawierające dodatkowe argumenty, które mają być używane jako dane wejściowe podczas transformacji.

Zagadnienia dotyczące zabezpieczeń

Podczas tworzenia aplikacji korzystającej XslTransform z klasy należy pamiętać o następujących elementach i ich implikacjach:

  • Obiekty rozszerzeń są domyślnie włączone. XsltArgumentList Jeśli obiekt zawierający obiekty rozszerzenia jest przekazywany do Transform metody, są one używane.

  • Arkusze stylów XSLT mogą zawierać odwołania do innych plików i osadzonych bloków skryptów. Złośliwy użytkownik może wykorzystać ten problem, dostarczając ci dane lub arkusze stylów, które po wykonaniu spowodują przetworzenie systemu do momentu, gdy komputer będzie mało zasobów.

  • Aplikacje XSLT uruchamiane w środowisku zaufania mieszanego mogą powodować fałszowanie arkuszy stylów. Na przykład złośliwy użytkownik może załadować obiekt ze szkodliwym arkuszem stylów i przekazać go do innego użytkownika, który następnie wywołuje Transform metodę i wykonuje transformację.

Te problemy z zabezpieczeniami można rozwiązać, nie akceptując XslTransform obiektów, arkuszy stylów XSLT ani danych źródłowych XML z niezaufanych źródeł.

Obsługa skryptów

Ta klasa obsługuje skrypty osadzone przy użyciu msxsl:script elementu .

W wersji 1.1 .NET Framework dowód arkusza stylów określa, jakie uprawnienia są przekazywane do skryptów osadzonych.

  • Jeśli arkusz stylów został załadowany z identyfikatora URI (Uniform Resource Identifier), identyfikator URI jest używany do tworzenia dowodów. Te dowody obejmują identyfikator URI wraz z jego witryną i strefą.

  • Jeśli arkusz stylów został załadowany przy użyciu innego źródła, możesz podać dowody, przekazując System.Security.Policy.Evidence obiekt do Load metody. W przeciwnym razie zestaw skryptów ma pełne zaufanie.

Osoby wywołujące częściowo zaufane: UnmanagedCode wymagane jest uprawnienie do skompilowania osadzonego skryptu. ControlEvidence do podania Evidence Load metody wymagane jest uprawnienie. Obiekt SecurityException jest zgłaszany, jeśli obiekt wywołujący nie ma niezbędnych uprawnień. Zobacz System.Security.Permissions.SecurityPermission i System.Security.Permissions.SecurityPermissionFlag , aby uzyskać więcej informacji.

Element msxsl:script ma następujące wymagania:

  • Element msxsl:script należy do urn:schemas-microsoft-com:xslt przestrzeni nazw. Arkusz stylów musi zawierać deklarację xmlns:msxsl=urn:schemas-microsoft-com:xsltprzestrzeni nazw .

  • Element msxsl:script może zawierać language atrybut określający język skryptów do użycia. Wartość atrybutu language musi być jedną z następujących wartości: C#, CSharp, VB, VisualBasic, JScript lub JavaScript. Ponieważ nazwa języka nie uwzględnia wielkości liter, język JavaScript i javascript są prawidłowe. Jeśli atrybut nie zostanie określony, wartość domyślna language to JScript.

  • Element msxsl:script musi zawierać implements-prefix atrybut zawierający prefiks reprezentujący przestrzeń nazw skojarzona z blokiem skryptu. Ta przestrzeń nazw musi być zdefiniowana w arkuszu stylów. Arkusz stylów może zawierać wiele bloków skryptów pogrupowanych według przestrzeni nazw. Nie można mieć bloków skryptów z wieloma językami w tej samej przestrzeni nazw. Bloki skryptów mogą wywoływać funkcję zdefiniowaną w innym bloku skryptu, pod warunkiem że bloki skryptów znajdują się w tej samej przestrzeni nazw. Zawartość bloku skryptu jest analizowana zgodnie z regułami i składnią języka skryptów (dostarczonego language przez atrybut). Na przykład jeśli masz blok skryptu języka C#, komentarze będą poprzedzone // znakami. Komentarze muszą być prawidłową zawartością XML.

Uwaga

Zaleca się zawijanie bloków skryptów w sekcji CDATA.

<msxsl:script implements-prefix='xy' language='C#'>  
 <![CDATA[  
 // Add code here.  
 ]]>
</msxsl:script>  

Funkcje można zadeklarować w elemecie msxsl:script . W poniższej tabeli przedstawiono przestrzenie nazw, które są domyślnie obsługiwane.

Obsługiwane przestrzenie nazw Opis
System Klasy systemowe.
System.Collection Klasy kolekcji.
System.Text Klasy obsługi tekstu.
System.Xml Podstawowe klasy XML.
System.Xml.Xsl Klasy XSLT.
System.Xml.XPath XML Path Language (XPath) klasy.

Podane argumenty i wartości zwracane zdefiniowane przez funkcje skryptu muszą być jednym z typów World Wide Web Consortium (W3C) wymienionych poniżej. W poniższej tabeli przedstawiono mapowanie między typami W3C, XPath lub XSLT oraz odpowiadającymi im klasami .NET Framework.

Typ W3C Równoważna klasa .NET
Ciąg (XPath) System.String
Wartość logiczna (XPath) System.Boolean
Liczba (XPath) System.Double
Fragment drzewa wyników (XSLT) System.Xml.XPath.XPathNavigator
Zestaw węzłów (XPath) System.Xml.XPath.XPathNodeIterator

Jeśli funkcja skryptu korzysta z jednego z następujących typów liczbowych: Int16, UInt16, Int32, UInt32, Int64, UInt64, Single lub Decimal, te typy są coerced na Double, które są mapowane na liczbę typów W3C XPath.

Wyjątek jest zgłaszany, gdy wywoływana jest funkcja, która nie może przekonwertować wyniku argumentu na jeden z wymaganych typów.

Uwaga

msxsl:script i msxsl:node-list są jedynymi funkcjami z urn:schemas-microsoft-com:xslt przestrzeni nazw obsługiwanej przez klasę XslTransform .

XslTransform ma możliwość korzystania z kodu środowiska uruchomieniowego języka wspólnego (CLR) jako mechanizmu rozszerzenia. Jest to realizowane przez przekazanie wystąpienia klasy do XslTransform klasy i wywołanie jej publicznych metod w arkuszu stylów XSLT. Metody zdefiniowane za pomocą słowa kluczowego params , które umożliwiają przekazanie nieokreślonej liczby parametrów, nie działają poprawnie w tym scenariuszu. Aby uzyskać więcej informacji, zobacz parametry .

Aby uzyskać więcej informacji, zobacz Przekształcenia XSLT z klasą XslTransform.

Konstruktory

XslTransform()

Inicjuje nowe wystąpienie klasy XslTransform.

Właściwości

XmlResolver
Nieaktualne.

Ustawia metodę XmlResolver używaną do rozpoznawania zasobów zewnętrznych po wywołaniu Transform metody.

Metody

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
Load(IXPathNavigable)
Nieaktualne.

Ładuje arkusz stylów XSLT zawarty w pliku IXPathNavigable.

Load(IXPathNavigable, XmlResolver)
Nieaktualne.

Ładuje arkusz stylów XSLT zawarty w pliku IXPathNavigable.

Load(IXPathNavigable, XmlResolver, Evidence)

Ładuje arkusz stylów XSLT zawarty w pliku IXPathNavigable. Ta metoda umożliwia ograniczenie uprawnień arkusza stylów przez określenie dowodów.

Load(String)

Ładuje arkusz stylów XSLT określony przez adres URL.

Load(String, XmlResolver)

Ładuje arkusz stylów XSLT określony przez adres URL.

Load(XmlReader)
Nieaktualne.

Ładuje arkusz stylów XSLT zawarty w pliku XmlReader.

Load(XmlReader, XmlResolver)
Nieaktualne.

Ładuje arkusz stylów XSLT zawarty w pliku XmlReader.

Load(XmlReader, XmlResolver, Evidence)

Ładuje arkusz stylów XSLT zawarty w pliku XmlReader. Ta metoda umożliwia ograniczenie uprawnień arkusza stylów przez określenie dowodów.

Load(XPathNavigator)
Nieaktualne.

Ładuje arkusz stylów XSLT zawarty w pliku XPathNavigator.

Load(XPathNavigator, XmlResolver)
Nieaktualne.

Ładuje arkusz stylów XSLT zawarty w pliku XPathNavigator.

Load(XPathNavigator, XmlResolver, Evidence)

Ładuje arkusz stylów XSLT zawarty w pliku XPathNavigator. Ta metoda umożliwia ograniczenie uprawnień arkusza stylów przez określenie dowodów.

MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)
Transform(IXPathNavigable, XsltArgumentList)
Nieaktualne.

Przekształca dane XML w obiekcie IXPathNavigable przy użyciu określonej args wartości i zwraca wynik do .XmlReader

Transform(IXPathNavigable, XsltArgumentList, Stream)
Nieaktualne.

Przekształca dane XML w IXPathNavigable obiekcie przy użyciu określonego args elementu i generuje wynik na Streamwartość .

Transform(IXPathNavigable, XsltArgumentList, Stream, XmlResolver)

Przekształca dane XML w elemecie IXPathNavigable przy użyciu określonej wartości args i generuje wynik na wartość Stream.

Transform(IXPathNavigable, XsltArgumentList, TextWriter)
Nieaktualne.

Przekształca dane XML w IXPathNavigable obiekcie przy użyciu określonego args elementu i generuje wynik na TextWriterwartość .

Transform(IXPathNavigable, XsltArgumentList, TextWriter, XmlResolver)

Przekształca dane XML w elemecie IXPathNavigable przy użyciu określonej wartości args i generuje wynik na wartość TextWriter.

Transform(IXPathNavigable, XsltArgumentList, XmlResolver)

Przekształca dane XML w elemecie IXPathNavigable przy użyciu określonej wartości args i generuje wynik na wartość XmlReader.

Transform(IXPathNavigable, XsltArgumentList, XmlWriter)
Nieaktualne.

Przekształca dane XML w elemecie IXPathNavigable przy użyciu określonej wartości args i generuje wynik na wartość XmlWriter.

Transform(IXPathNavigable, XsltArgumentList, XmlWriter, XmlResolver)

Przekształca dane XML w elemecie IXPathNavigable przy użyciu określonej wartości args i generuje wynik na wartość XmlWriter.

Transform(String, String)
Nieaktualne.

Przekształca dane XML w pliku wejściowym i zwraca wynik do pliku wyjściowego.

Transform(String, String, XmlResolver)

Przekształca dane XML w pliku wejściowym i zwraca wynik do pliku wyjściowego.

Transform(XPathNavigator, XsltArgumentList)
Nieaktualne.

Przekształca dane XML w obiekcie XPathNavigator przy użyciu określonej args wartości i zwraca wynik do .XmlReader

Transform(XPathNavigator, XsltArgumentList, Stream)
Nieaktualne.

Przekształca dane XML w elemecie XPathNavigator przy użyciu określonej wartości args i generuje wynik na wartość Stream.

Transform(XPathNavigator, XsltArgumentList, Stream, XmlResolver)

Przekształca dane XML w elemecie XPathNavigator przy użyciu określonej wartości args i generuje wynik na wartość Stream.

Transform(XPathNavigator, XsltArgumentList, TextWriter)
Nieaktualne.

Przekształca dane XML w elemecie XPathNavigator przy użyciu określonej wartości args i generuje wynik na wartość TextWriter.

Transform(XPathNavigator, XsltArgumentList, TextWriter, XmlResolver)

Przekształca dane XML w elemecie XPathNavigator przy użyciu określonej wartości args i generuje wynik na wartość TextWriter.

Transform(XPathNavigator, XsltArgumentList, XmlResolver)

Przekształca dane XML w elemecie XPathNavigator przy użyciu określonej wartości args i generuje wynik na wartość XmlReader.

Transform(XPathNavigator, XsltArgumentList, XmlWriter)
Nieaktualne.

Przekształca dane XML w obiekcie XPathNavigator przy użyciu określonych args i generuje wynik na wartość XmlWriter.

Transform(XPathNavigator, XsltArgumentList, XmlWriter, XmlResolver)

Przekształca dane XML w obiekcie XPathNavigator przy użyciu określonych args i generuje wynik na wartość XmlWriter.

Dotyczy

Bezpieczeństwo wątkowe

XslTransform obiekty są bezpieczne tylko wątkowo w przypadku operacji przekształcania. Inne operacje nie mają gwarancji bezpieczeństwa wątkowego. Należy upewnić się, że żadne inne metody nie są wywoływane na obiekcie podczas operacji ładowania.