Implementazione di comportamenti discretionary nella classe XslTransform

Si definiscono discretionary i comportamenti, elencati nella raccomandazione XSL Transformations (XSLT) Versione 1.0 (informazioni in lingua inglese), nei quali l'implementazione sceglie una delle numerose opzioni disponibili per gestire una determinata situazione. Nella sezione 7.3 Creating Processing Instructions della Raccomandazione W3C viene ad esempio specificato che la creazione di nodi diversi da nodi di testo durante la creazione di un'istanza del contenuto di xsl:processing-instruction costituisce un errore. Per alcuni problemi, il W3C suggerisce cosa fare se il processore tenta di risolvere l'errore. Per l'errore illustrato nella sezione 7.3 viene spiegato che il problema può essere risolto ignorando i nodi e il relativo contenuto.

Nella tabella seguente per ciascuno dei comportamenti discretionary consentiti dal W3C sono elencati i comportamenti discretionary relativi all'implementazione .NET della classe XslTransform e la sezione della Raccomandazione XSL Transformations (XSLT) Versione 1.0, disponibile all'indirizzo http://www.w3.org/TR/xslt (informazioni in lingua inglese), in cui viene discusso tale problema.

Problema Comportamento Sezione
Nodo di testo corrispondente sia a xsl:strip-space sia a xsl:preserve-space. Ripristino 3.4
Nodo di origine corrispondente a più di una regola dei modelli. Ripristino 5.5
Un URI dello spazio dei nomi è dichiarato come alias per più URI dello spazio dei nomi, tutti con la stessa precedenza di importazione. Ripristino 7.1.1
L'attributo del nome in xsl:attribute e xsl:element generato da un modello del valore dell'attributo non è un QName valido. Generazione di eccezione 7.1.12 e 7.1.3
Aggiunta di un attributo a un elemento dopo che al nodo dell'elemento sono stati già aggiunti nodi figlio. Ripristino 7.1.3
Aggiunta di un attributo in una posizione diversa da un nodo Element. Ripristino 7.1.3
L'istanza del contenuto dell'elemento xsl:attribute creata non è un nodo di testo. Ripristino 7.1.3
Due gruppi di attributi hanno la stessa precedenza di importazione, lo stesso nome espanso e lo stesso attributo e non sono presenti altri gruppi di attributi contenenti l'attributo comune, con lo stesso nome e con un'importanza superiore. Ripristino 7.1.4
L'attributo del nome xsl:processing-instruction non restituisce sia un NCName, sia una destinazione dell'istruzione di elaborazione. Ripristino 7.3
L'istanza del contenuto di xsl:processing-instruction crea nodi diversi da quelli di testo. Ripristino 7.3
I risultati della creazione di un'istanza del contenuto di xsl:processing-instruction contengono la stringa "?>". Ripristino 7.3
I risultati della creazione di un'istanza del contenuto di xsl:comment contengono la stringa "--" o terminano con "-". Ripristino 7.4
I risultati della creazione di un'istanza del contenuto di xsl:comment creano nodi diversi da quelli di testo. Ripristino 7.4
Il modello all'interno di un elemento di associazione della variabile restituisce un nodo di attributo o un nodo dello spazio dei nomi. Ripristino 11.2
Si verifica un errore durante il recupero della risorsa dall'URI passato nella funzione del documento. Generazione di eccezione 12.1
Il riferimento all'URI nella funzione del documento contiene un identificatore di frammento e si verifica un errore nell'elaborazione di tale identificatore. Generazione di eccezione 12.1
Esistono più attributi con lo stesso nome che non sono denominati cdata-section-elements in xls:output e questi attributi hanno la stessa precedenza di importazione. Ripristino 16
Il processore non supporta il valore di codifica dei caratteri fornito nell'attributo encoding dell'elemento xsl:output. Ripristino 16.1
L'attributo disable-output-escaping viene utilizzato per un nodo di testo che a sua volta viene utilizzato per creare un elemento diverso da un nodo di testo nella struttura del risultato. L'attributo disable-output-escaping viene ignorato 16.4
Conversione di un frammento di struttura risultato in un numero o stringa, se il frammento contiene un nodo di testo senza l'escape dell'output attivato. Ignorato 16.4
L'escape dell'output è disattivato per i caratteri che non possono essere rappresentati nella codifica utilizzata dal processore XSLT per l'output. Ignorato 16.4
Aggiunta di un nodo dello spazio dei nomi a un elemento dopo che gli sono stati aggiunti elementi figlio o attributi. Ripristino Errata e25
xsl:number è un valore NaN, infinito o minore di 0,5. Ripristino Errata e24
Il secondo gruppo di nodi dell'argomento della funzione del documento è vuoto e il riferimento all'URI è relativo. Ripristino Errata e14

Le sezioni Errata si trovano in XSL Transformations (XSLT) Version 1.0 Specification Errata, all'indirizzo http://www.w3.org/1999/11/REC-xslt-19991116-errata/.

Comportamenti dell'implementazione definiti dall'utente

Alcuni comportamenti sono caratteristici solo dell'implementazione della classe XslTransform. In questa sezione vengono descritte l'implementazione di xsl:sort specifica del provider e le funzionalità supportate dalla classe XslTransform.

xsl:sort

A proposito delle trasformazioni da ordinare, nella raccomandazione XSL Transformations (XSLT) Versione 1.0 sono contenute alcune osservazioni. In particolare:

  • Due processori XSLT potrebbero essere processori conformi, ma ordinare in maniera differente.
  • Non tutti i processori XSLT supportano le stesse lingue.
  • In relazione alle lingue, è probabile che processori diversi varino il modo in cui eseguono l'ordinamento su una particolare lingua, senza che questo sia specificato da xsl:sort.

Nella tabella riportata di seguito, per ciascun tipo di dati viene descritta la modalità di ordinamento dell'implementazione .NET Framework di una trasformazione tramite XslTransform.

Tipo di dati Modalità di ordinamento
Testo I dati vengono ordinati utilizzando il metodo String.Compare di Common Language Runtime (CLR) e le impostazioni internazionali specifiche della lingua. Quando il tipo di dati risulta uguale a "text", l'ordinamento nella classe XslTransform si svolge in modo identico a quanto avviene nel CLR con il confronto delle stringhe del CLR.
Numero I valori numerici vengono considerati come numeri XPath e vengono ordinati in base alla raccomandazione XML Path Language (XPath) Versione 1.0, Sezione 3.5, disponibile all'indirizzo www.w3.org/TR/xpath.html#numbers.

Funzionalità opzionali supportate

Nella tabella seguente sono riportate le funzionalità la cui implementazione è opzionale per un processore XSLT e che vengono implementate nella classe XslTransform.

Funzionalità Posizione del riferimento Note
Attributo disable-output-escaping sui tag <xsl:text...> e <xsl:value-of...>. XSL Transformations (XSLT) Versione 1.0 (www.w3.org/TR/xslt)

Sezione 16.4

L'attributo disable-output-escaping viene ignorato quando gli elementi xsl:text o xsl:value-of sono utilizzati in un elemento xsl:comment, xsl:processing-instruction, o xsl:attribute.

I frammenti di struttura risultato che contengono testo e l'output di testo di cui è stato eseguito l'escape, non sono supportati.

L'attributo disable-output-escaping viene ignorato durante l'esecuzione di una trasformazione in un oggetto XmlReader o XmlWriter.

Vedere anche

Implementazione del processore XSLT da parte della classe XslTransform | Trasformazioni XSLT con la classe XslTransform | XPathNavigator nelle trasformazioni | XPathNodeIterator nelle trasformazioni | Input di XPathDocument in XslTransform | Input di XmlDataDocument in XslTransform | Input di XmlDocument in XslTransform | Classe XslTransform | Membri XslTransform