Freigeben über


Implementierung von freigegebenen Verhaltensweisen in der XslTransform-Klasse

HinweisHinweis

Die XslTransform-Klasse ist in .NET Framework, Version 2.0 veraltet.Mithilfe der XslCompiledTransform-Klasse können Sie XSLT-Transformationen (Extensible Stylesheet Language for Transformations) vornehmen.Weitere Informationen finden Sie unter Verwenden der XslCompiledTransform-Klasse und Migrieren von der XslTransform-Klasse.

Freigegebene Verhaltensweisen sind die in der W3C-Empfehlung zu XSL-Transformationen (XSLT), Version 1.0 (www.w3.org/TR/xslt), aufgelisteten Verhaltensweisen, bei denen der Implemetierungsanbieter eine von mehreren Optionen zur Behandlung einer bestimmten Situation auswählt. Laut W3C-Empfehlung, Abschnitt 7.3, "Creating Processing Instructions", liegt z. B. ein Fehler vor, wenn durch Instanziierung des Inhalts von xsl:processing-instruction außer Textknoten auch andere Knoten erstellt werden. Bei bestimmten Problemen nennt das W3C auch Maßnahmen für den Fall, dass der Prozessor eine Wiederherstellung vom Fehler durchführt. Für das in Abschnitt 7.3 angeführte Problem empfiehlt das W3C, die Knoten einschließlich des Inhalts zu ignorieren, damit die Implementierung von diesem Fehler wiederherstellen kann.

Daher enthält die folgende Tabelle alle freigegebenen Verhaltensweisen, die vom W3C zugelassen sind und die für die .NET Framework-Implementierung der XslTransform-Klasse implementiert sind, sowie jeweils den Abschnitt der W3C-Empfehlung zu XSLT 1.0, in der das entsprechende Problem behandelt wird.

Problem

Verhalten

Abschnitt

Ein Textknoten entspricht sowohl xsl:strip-space als auch xsl:preserve-space.

Wiederherstellen

3.4

Ein Quellknoten entspricht mehreren Vorlagenregeln.

Wiederherstellen

5.5

Ein Namespace-URI (Uniform Resource Identifier) ist als Alias für mehrere Namespace-URIs deklariert, die alle die gleiche Importpriorität haben.

Wiederherstellen

7.1.1

Das Namensattribut in xsl:attribute und xsl:element, das aus einer Attributwertvorlage generiert wurde, ist kein gültiger qualifizierter Name (QName).

Ausgelöste Ausnahme

7.1.2 und 7.1.3

Hinzufügen eines Attributs zu einem Element, nachdem dem Elementknoten untergeordnete Knoten hinzugefügt wurden.

Wiederherstellen

7.1.3

Hinzufügen eines Attributs zu beliebiegen Dokumentbestandteilen außer einem Elementknoten.

Wiederherstellen

7.1.3

Instanziierung des Inhalts des xsl:attribute-Elements ist kein Textknoten.

Wiederherstellen

7.1.3

Zwei Attributgruppen besitzen dieselbe Importpriorität und denselben erweiterten Namen. Beide verfügen über dieselben Attribute, und es existiert keine weitere Attributgruppe, die das gemeinsame Attribut mit demselben Namen und höherer Importpriorität enthält.

Wiederherstellen

7.1.4

Das xsl:processing-instruction-Namesattribut weist keinen NCNamen (Non-Colon Name) und kein Ziel für Verarbeitungsanweisungen auf.

Wiederherstellen

7.3

Bei der Instanziierung des Inhalts von xsl:processing-instruction werden statt Textknoten andere Knoten erstellt.

Wiederherstellen

7.3

Ergebnisse der Instanziierung des Inhalts von xsl:processing-instruction enthalten die Zeichenfolge "?>".

Wiederherstellen

7.3

Ergebnisse der Instanziierung des Inhalts von xsl:comment enthalten die Zeichenfolge "--" oder enden mit "-".

Wiederherstellen

7.4

Bei den Ergebnissen der Instanziierung des Inhalts von xsl:comment werden statt Textknoten andere Knoten erstellt.

Wiederherstellen

7.4

Von der Vorlage innerhalb eines Variablenbindungselements wird ein Attributknoten oder ein Namespace-Knoten zurückgegeben.

Wiederherstellen

11.2

Fehler beim Abrufen der Ressource aus dem URI, der in die Dokumentfunktion übergeben wird.

Ausgelöste Ausnahme

12.1

Der URI-Verweis in der Dokumentfunktion enthält einen Fragmentbezeichner, und es tritt ein Fehler bei der Verarbeitung des Fragmentbezeichners auf.

Ausgelöste Ausnahme

12.1

Es sind mehrere Attribute mit demselben Namen vorhanden, die in xls:output nicht als cdata-section-elements benannt sind, und diese Attribute besitzen dieselbe Importpriorität.

Wiederherstellen

16

Der Prozessor unterstützt den Zeichencodierungswert nicht, der im encoding-Attribut des xsl:output-Elements angegeben wird.

Wiederherstellen

16.1

disable-output-escaping wird für einen Textknoten verwendet, und der Textknoten wird zur Erstellung von Dokumentbestandteilen (außer einem Textknoten) in der Ergebnisstruktur verwendet.

Das disable-output-escaping-Attribut wird ignoriert.

16.4

Konvertieren eines Ergebnisstrukturfragments in eine Zahl oder eine Zeichenfolge, falls das Ergebnisstrukturfragment einen Textknoten mit aktiviertem Ausgabeschutz enthält.

Ignoriert

16.4

Der Ausgabeschutz wird für Zeichen deaktiviert, die in der Codierung, die der XSLT-Prozessor für die Ausgabe verwendet, nicht dargestellt werden können.

Ignoriert

16.4

Hinzufügen eines Namespace-Knotens zu einem Element, nachdem diesem entweder untergeordnete Elemente oder Attribute hinzugefügt worden sind.

Wiederherstellen

Errata e25

xsl:number ist NaN (keine Zahl), unbegrenzt oder kleiner als 0,5.

Wiederherstellen

Errata e24

Das zweite "node-set"-Argument der Dokumentfunktion ist leer, und der URI-Verweis ist relativ

Wiederherstellen

Errata e14

Die Abschnitte aus den Errata finden Sie im W3C-Dokument "XSL Transformations (XSLT) Version 1.0 Specification Errata" unter www.w3.org/1999/11/REC-xslt-19991116-errata (nur auf Englisch verfügbar).

Benutzerdefiniertes Implementierungsverhalten

Bestimmte Verhaltensweisen sind einzigartig für die Implementierung der XslTransform-Klasse. In diesem Abschnitt werden die anbieterspezifischen Implementierungen von xsl:sort und die optionalen Funktionen erläutert, die von der XslTransform-Klasse unterstützt werden.

xsl:sort

In Bezug auf die Verwendung einer Transformation für eine Sortierung werden in der W3C-Empfehlung zu XSLT 1.0 einige Beobachtungen beschrieben. Dazu gehören folgende:

  • Zwei XSLT-Prozessoren können konforme Prozessoren sein, aber dennoch eine unterschiedliche Sortierung durchführen.

  • Nicht alle XSLT-Prozessoren unterstützen die gleichen Sprachen.

  • Unterschiedliche Prozessoren können für eine bestimmte Sprache unterschiedliche Sortierungen durchführen, die nicht in xsl:sort. angegeben sind.

In der folgenden Tabelle wird das Sortierverhalten dargestellt, das für die einzelnen Datentypen in der .NET Framework-Implementierung einer Transformation mit der XslTransform-Klasse implementiert ist.

Datentyp

Sortierverhalten

Text

Daten werden mithilfe der "String.Compare"-Methode der Common Language Runtime (CLR) und des betreffenden Gebietsschemas sortiert. Wenn der Datentyp Text ist, ist das Sortierverhalten in der XslTransform-Klasse mit dem Verhalten des Zeichenfolgenvergleichs der CLR identisch.

Zahl

Numerische Werte werden als Zahlen der XML Path Language (XPath) behandelt und gemäß der Richtlinien in der W3C-Empfehlung zu XML Path Languages (XPath), Version 1.0, Abschnitt 3.5 (www.w3.org/TR/xpath.html#numbers), sortiert.

Unterstützte optionale Funktionen

In der folgenden Tabelle sind die Funktionen aufgeführt, die ein XSLT-Prozessor optional implementieren kann und die in der XslTransform-Klasse implementiert sind.

Funktion

Referenzdokumentation

Anmerkungen

Das disable-output-escaping-Attribut für das <xsl:text...>-Tag und das <xsl:value-of...>-Tag.

W3C-Empfehlung zu XSLT 1.0,

Abschnitt 16.4

Das disable-output-escaping-Attribut wird ignoriert, wenn das xsl:text-Element oder das xsl:value-of-Element in einem xsl:comment-Element, einem xsl:processing-instruction-Element oder einem xsl:attribute-Element verwendet wird.

Ergebnisstrukturfragmente, die Text enthalten, und deren Textausgabe nicht geschützt wurde, werden nicht unterstützt.

Das disable-output-escaping-Attribut wird bei der Transformation in ein XmlReader-Objekt oder ein XmlWriter-Objekt ignoriert.

Siehe auch

Referenz

XslTransform

XslTransform

Konzepte

Implementierung des XSLT-Prozessors durch die XslTransform-Klasse

XSLT-Transformationen mit der XslTransform-Klasse

"XPathNavigator" in Transformationen

"XPathNodeIterator" in Transformationen

XPathDocument-Eingaben in "XslTransform"

XmlDataDocument-Eingaben in "XslTransform"

XmlDocument-Eingaben in "XslTransform"