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 .
Odzyskiwanie wskazuje, że XslCompiledTransform klasa zostanie odzyskana po tym błędzie. Zdarzenie może służyć do raportowania XsltArgumentList.XsltMessageEncountered zdarzeń z procesora XSLT.
Błąd wskazuje, że dla tego warunku jest zgłaszany wyjątek.
Odwołania do sekcji można znaleźć w rekomendacji XSL W3C (XSLT) w wersji 1.0 i rekomendacji XSL W3C (XSLT) w wersji 1.0 Specyfikacja Errata.
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.