Thread View: pl.comp.xml
8 messages
8 total messages
Started by pbk++
Wed, 16 Apr 2008 07:30
xercesc - raportowanie błędów
Author: pbk++
Date: Wed, 16 Apr 2008 07:30
Date: Wed, 16 Apr 2008 07:30
19 lines
1503 bytes
1503 bytes
Witam Problem dotyczy analizy błędów zwracanych przez xercesc przy walidacji dokumentu przy zadanej schemie. Czy potraficie wyciągnąć z parsera informację o tym, gdzie wystąpił błąd? Standardowa metoda polegająca na łapaniu wyjątków z użyciem potomka klasy DefaultHandler daje dostęp tylko do linii i kolumny, gdzie wystąpił błąd. Niestety informacja ta jest średnio użyteczna, gdyż nie wiem w jaki sposób liczone są owe linie i kolumny w pliku xml. Czy znacie może jakiś inny sposób wykrycia, który element/atrybut jest przyczyną błędu walidacji. Najlepiej byłoby oczywiście uzyskać XPath. -- Piotrek
Re: xercesc - raportowanie błędów
Author: szomiz
Date: Wed, 16 Apr 2008 08:52
Date: Wed, 16 Apr 2008 08:52
23 lines
1890 bytes
1890 bytes
Użytkownik "pbk++" <jbond007@free.polbox.pl> napisał w wiadomości news:fu4aca$9q1$1@nemesis.news.neostrada.pl... Witam > Czy znacie może jakiś inny sposób wykrycia, który element/atrybut jest > przyczyną błędu walidacji. Najlepiej byłoby oczywiście uzyskać XPath. Nawet kilka :-P Metoda brute-force: walidowac fragmenty dokumentu - przy tych/takich schemach przepinasz odpowiedni "zagniezdzony" xs:element w miejsce "glownego" xs:element i dziala. Elegancko: Poprawnosc struktury jestes w stanie sprawdzic transformacja. Z wartosciami juz tak lekko nie jest, ale to czego nie da sie w prosty sposob w transformacji - mozna potraktowac jak dodatkowa regule globalna. Mozna rozniez sprowadzic dokument i scheme do jednego elementu z kupa odpowiednio ponazywanych atrybutow. sz.
Re: xercesc - raportowanie błędów
Author: pbk++
Date: Wed, 16 Apr 2008 09:17
Date: Wed, 16 Apr 2008 09:17
37 lines
2219 bytes
2219 bytes
szomiz pisze: > Metoda brute-force: walidowac fragmenty dokumentu - przy tych/takich > schemach przepinasz odpowiedni "zagniezdzony" xs:element w miejsce > "glownego" xs:element i dziala. O Boże ... > > Elegancko: > > Poprawnosc struktury jestes w stanie sprawdzic transformacja. Z wartosciami > juz tak lekko nie jest, ale to czego nie da sie w prosty sposob w > transformacji - mozna potraktowac jak dodatkowa regule globalna. O ... ! > > Mozna rozniez sprowadzic dokument i scheme do jednego elementu z kupa > odpowiednio ponazywanych atrybutow. > Pewnie, ze wszystko można. Ale przecież zaproponowane przez Ciebie rozwiązania to wynajdywanie koła od początku! Sądzę, że od walidowania dokumentu są parsery. Po to przecież je wynaleziono. I ... parser to robi. Mi chodzi tylko o to, żeby uzyskać z niego sensowniejszy komunikat, tak, żebym był w stanie w jakikolwiek sposób określić miejsce w dokumencie XML w którym jest błąd. Mogą być to nawet owe numery linii i kolumny, byleby wskazywały na rzeczywiste miejsce wystąpienia błędu. Zakładam, że analizowany dokument jest poprawnym XML'em, choć może nie być zgodny ze schemą. -- Piotrek
Re: xercesc - raportowanie błędów
Author: szomiz
Date: Wed, 16 Apr 2008 10:25
Date: Wed, 16 Apr 2008 10:25
33 lines
2536 bytes
2536 bytes
Użytkownik "pbk++" <jbond007@free.polbox.pl> napisał w wiadomości news:fu4gkf$f8k$1@nemesis.news.neostrada.pl... szomiz pisze: >> schemach przepinasz odpowiedni "zagniezdzony" xs:element w miejsce >> "glownego" xs:element i dziala. > O Boże ... No ale o co chodzi? Nawet algorytmu nie trzeba, bo sie dokument ladnie galeziami na kawalki dzieli. > Pewnie, ze wszystko można. Ale przecież zaproponowane przez Ciebie > rozwiązania to wynajdywanie koła od początku! Sądzę, że od walidowania > dokumentu są parsery. Po to przecież je wynaleziono. > I ... parser to robi. Mi chodzi tylko o to, żeby uzyskać z niego > sensowniejszy komunikat, tak, żebym był w stanie w jakikolwiek sposób > określić miejsce w dokumencie XML w którym jest błąd. Mogą być to nawet > owe numery linii i kolumny, byleby wskazywały na rzeczywiste miejsce > wystąpienia błędu. Zadaniem parsera przy sprawdzaniu zgodnosci ze schema jest _szybkie_ stwierdzenie czy dokument jest czy nie jest zgodny, a nie pokazywanie palcem co jest nie tak. I dlatego wiekszosc parserow przerywa sprawdzanie po pierwszym znalezionym bledzie. A nawet jakby pokazywaly wezel z bledem to dosc czesto wprowadzaly by zamieszanie. Przyklad: przekroczona dopuszczalna liczba elementow podrzednych - no i ktory z nich jest tym niepoprawnym? sz.
Re: xercesc - raportowanie błędów
Author: pbk++
Date: Wed, 16 Apr 2008 11:13
Date: Wed, 16 Apr 2008 11:13
12 lines
1509 bytes
1509 bytes
szomiz pisze: > Użytkownik "pbk++" <jbond007@free.polbox.pl> napisał w wiadomości Parsowanie przeniosłem na sax'a. Sax parsuje dokument po kolei, jak leci. Podczas parsowania notuję jakie zwiedziłem elementy. Element w którym jest błąd jest ostatnim do jakiego dochodzi parser. Na podstawie historii przeglądanych węzłów mogę zbudować XPath. Na chwilę obecną nie zauważyłem nieprawidłowości w.w. algorytmie. -- Piotrek
Re: xercesc - raportowanie błędów
Author: szomiz
Date: Wed, 16 Apr 2008 11:40
Date: Wed, 16 Apr 2008 11:40
7 lines
1407 bytes
1407 bytes
> Parsowanie przeniosłem na sax'a. Sax parsuje dokument po kolei, jak Saxem stosunkowo male pliki? :/ sz.
Re: xercesc - raportowanie błędów
Author: pbk++
Date: Wed, 16 Apr 2008 11:54
Date: Wed, 16 Apr 2008 11:54
20 lines
1781 bytes
1781 bytes
szomiz pisze:
>> Parsowanie przeniosłem na sax'a. Sax parsuje dokument po kolei, jak
>
> Saxem stosunkowo male pliki?
>
> :/
>
Muszę i tak ją sparsować i tak. Mam to robić ręcznie?
Algorytm walidowania SAD'ów mam taki:
1) walidacja SAD'u podług schemy
a) jeśli błąd to koniec i wyświetlenie co i gdzie jest źle
(o tym mówimy w tym wątku)
2) walidacja po regułach R, RW, G, itp - XSLT, wygenerowanie
nowego dokumentu z listą błędów we własnej przestrzeni nazw
3) sprawdzane innych reguł, które ciężko analizować za pomocą 1) i 2)
--
Piotrek
Re: xercesc - raportowanie błędów
Author: szomiz
Date: Wed, 16 Apr 2008 16:01
Date: Wed, 16 Apr 2008 16:01
9 lines
1595 bytes
1595 bytes
Użytkownik "pbk++" <jbond007@free.polbox.pl> napisał w wiadomości news:fu4pq9$nj0$1@nemesis.news.neostrada.pl... > Muszę i tak ją sparsować i tak. Mam to robić ręcznie? DOM'em bys sie mniej upieprzyl... Badasz zaleznosci miedzy wezlami w nieregularnym dokumencie. sz.
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads