XslTransform Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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
Uwaga
Klasa XslTransform jest przestarzała w .NET Framework Microsoft w wersji 2.0. Klasa XslCompiledTransform jest nowym procesorem XSLT. Aby uzyskać więcej informacji, zobacz Using the XslCompiledTransform Class and Migrating From the XslTransform Class (Używanie klasy XslCompiledTransform) i Migrating From the XslTransform Class (Używanie klasy XslCompiledTransform ) i Migrating From the XslTransform Class (Migrowanie z klasy XslTransform).
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:
XslTransform Utwórz obiekt.
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.
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 dourn:schemas-microsoft-com:xslt
przestrzeni nazw. Arkusz stylów musi zawierać deklaracjęxmlns:msxsl=urn:schemas-microsoft-com:xslt
przestrzeni nazw .Element
msxsl:script
może zawieraćlanguage
atrybut określający język skryptów do użycia. Wartość atrybutulanguage
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ślnalanguage
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 (dostarczonegolanguage
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 |
Transform(IXPathNavigable, XsltArgumentList, Stream) |
Nieaktualne.
Przekształca dane XML w IXPathNavigable obiekcie przy użyciu określonego |
Transform(IXPathNavigable, XsltArgumentList, Stream, XmlResolver) |
Przekształca dane XML w elemecie IXPathNavigable przy użyciu określonej wartości |
Transform(IXPathNavigable, XsltArgumentList, TextWriter) |
Nieaktualne.
Przekształca dane XML w IXPathNavigable obiekcie przy użyciu określonego |
Transform(IXPathNavigable, XsltArgumentList, TextWriter, XmlResolver) |
Przekształca dane XML w elemecie IXPathNavigable przy użyciu określonej wartości |
Transform(IXPathNavigable, XsltArgumentList, XmlResolver) |
Przekształca dane XML w elemecie IXPathNavigable przy użyciu określonej wartości |
Transform(IXPathNavigable, XsltArgumentList, XmlWriter) |
Nieaktualne.
Przekształca dane XML w elemecie IXPathNavigable przy użyciu określonej wartości |
Transform(IXPathNavigable, XsltArgumentList, XmlWriter, XmlResolver) |
Przekształca dane XML w elemecie IXPathNavigable przy użyciu określonej wartości |
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 |
Transform(XPathNavigator, XsltArgumentList, Stream) |
Nieaktualne.
Przekształca dane XML w elemecie XPathNavigator przy użyciu określonej wartości |
Transform(XPathNavigator, XsltArgumentList, Stream, XmlResolver) |
Przekształca dane XML w elemecie XPathNavigator przy użyciu określonej wartości |
Transform(XPathNavigator, XsltArgumentList, TextWriter) |
Nieaktualne.
Przekształca dane XML w elemecie XPathNavigator przy użyciu określonej wartości |
Transform(XPathNavigator, XsltArgumentList, TextWriter, XmlResolver) |
Przekształca dane XML w elemecie XPathNavigator przy użyciu określonej wartości |
Transform(XPathNavigator, XsltArgumentList, XmlResolver) |
Przekształca dane XML w elemecie XPathNavigator przy użyciu określonej wartości |
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.