Udostępnij za pośrednictwem


Odwracalne błędy XSLT

Zalecenie przekształcenia XSL W3C (XSLT) w wersji 1.0 zawiera obszary, w których dostawca implementacji może zdecydować, jak poradzić sobie z sytuacją. Te obszary są uważane za zachowanie uznaniowe. Na przykład w sekcji 7.3 Tworzenie instrukcji przetwarzania zalecenie XSLT 1.0 stwierdza, że jest to błąd w przypadku tworzenia wystąpienia zawartości węzłów xsl:processing-instruction innych niż węzły tekstowe. W przypadku niektórych problemów zalecenie XSLT 1.0 wskazuje, jaką decyzję należy podjąć, jeśli procesor zdecyduje się odzyskać sprawę po błędzie. W przypadku problemu podanego w sekcji 7.3 W3C mówi, że implementacja może odzyskać dane po tym błędzie, ignorując węzły i ich zawartość.

Zachowania dyskrecjonalne

W poniższej tabeli wymieniono poszczególne zachowania dyskrecjonalne dozwolone przez zalecenie XSLT 1.0 oraz sposób obsługi tych zachowań przez klasę XslCompiledTransform .

Warunek XSLT Sekcja Zachowanie XslCompiledTransform
Węzeł tekstowy jest zgodny z elementami xsl:strip-space i xsl:preserve-space. 3.4 Odzyskaj
Węzeł źródłowy pasuje do więcej niż jednej reguły szablonu. 5,5 Odzyskaj
Identyfikator URI przestrzeni nazw jest deklarowany jako alias dla wielu identyfikatorów URI przestrzeni nazw, a wszystkie mają ten sam pierwszeństwo importu. 7.1.1 Odzyskaj
Atrybut name w xsl:attribute pliku i xsl:element wygenerowany na podstawie wartości atrybutu nie jest wartością QName. 7.1.2, 7.1.3 Błąd*
Dwa zestawy atrybutów o tej samej nazwie importu i rozszerzonej mają wspólny atrybut i nie ma innego zestawu atrybutów zawierającego wspólny atrybut o tej samej nazwie o większej ważności. 7.1.4 Odzyskaj
Dodanie atrybutu do elementu po dodaniu do niego elementów podrzędnych. 7.1.3 Błąd*
Tworzenie atrybutu o nazwie "xmlns" 7.1.3 Błąd*
Dodawanie atrybutu do węzła, który nie jest elementem. 7.1.3 Błąd*
Tworzenie węzłów innych niż węzły tekstowe podczas tworzenia wystąpienia zawartości atrybutu xsl:attribute . 7.1.3 Błąd*
Atrybut name elementu xsl:processing-instruction nie zwraca zarówno nazwy NCName, jak i obiektu docelowego instrukcji przetwarzania. 7.3 Błąd*
Utworzenie wystąpienia zawartości węzłów xsl:processing-instruction innych niż węzły tekstowe. 7.3 Błąd*
Wynik utworzenia wystąpienia zawartości obiektu xsl:processing-instruction zawiera ciąg "?">. 7.3 Odzyskaj
Wynik utworzenia wystąpienia zawartości obiektu xsl:processing-instruction zawiera ciąg "--" lub kończy się ciągiem "-". 7,4 Odzyskaj
Wynik tworzenia wystąpienia zawartości węzłów xsl:comment innych niż węzły tekstowe. 7,4 Błąd*
Szablon w elemecie powiązania zmiennych zwraca węzeł atrybutu lub węzeł przestrzeni nazw. 11.2 Błąd*
Wystąpił błąd podczas pobierania zasobu z identyfikatora URI przekazanego do funkcji dokumentu. 12,1 Błąd
Odwołanie do identyfikatora URI w funkcji dokumentu zawiera identyfikator fragmentu i występuje błąd podczas przetwarzania identyfikatora fragmentu. 12,1 Odzyskać*
Istnieje wiele atrybutów o tej samej nazwie, ale różne wartości, które nie mają nazwy cdata-section elementów w tym xsl:output samym pierwszeństwie importu. 16 Odzyskaj
Procesor nie obsługuje kodowania w atrybucie xsl:output kodowania. 16.1 Odzyskaj
Wyłączenie danych wyjściowych ucieczki dla węzła tekstowego, który jest używany dla czegoś innego niż węzeł tekstowy w drzewie wyników. 16,4 Odzyskać*
Konwertowanie fragmentu drzewa wyników na liczbę lub ciąg, jeśli fragment drzewa wyników zawiera węzeł tekstowy z włączonym ucieczką danych wyjściowych. 16,4 Odzyskać*
Ucieczka danych wyjściowych jest wyłączona dla znaku, którego nie można przedstawić w kodowaniu używanym przez procesor XSLT dla danych wyjściowych. 16,4 Odzyskać*
Dodanie węzła przestrzeni nazw do elementu po dodaniu do niego elementów podrzędnych lub po dodaniu do niego atrybutów. errata 25 Błąd*
Atrybut value ma xsl:number wartość NAN, nieskończoną lub mniejszą niż 0,5 errata 24 Odzyskaj
Drugi argument node-set do funkcji dokumentu jest pusty, a odwołanie do identyfikatora URI jest względne. errata 14 Odzyskaj

* To zachowanie różni się od tego klasy XslTransform . Aby uzyskać więcej informacji, zobacz Implementacja zachowań dyskrecjonalnych w klasie XslTransform.

Zobacz też