Implementierung von freigegebenen Verhaltensweisen in der XslTransform-Klasse
Hinweis |
---|
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
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"