🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

8 total messages Started by pbk++ Wed, 16 Apr 2008 07:30
xercesc - raportowanie błędów
#9800
Author: pbk++
Date: Wed, 16 Apr 2008 07:30
19 lines
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
#9801
Author: szomiz
Date: Wed, 16 Apr 2008 08:52
23 lines
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
#9802
Author: pbk++
Date: Wed, 16 Apr 2008 09:17
37 lines
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
#9803
Author: szomiz
Date: Wed, 16 Apr 2008 10:25
33 lines
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
#9804
Author: pbk++
Date: Wed, 16 Apr 2008 11:13
12 lines
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
#9805
Author: szomiz
Date: Wed, 16 Apr 2008 11:40
7 lines
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
#9806
Author: pbk++
Date: Wed, 16 Apr 2008 11:54
20 lines
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
#9807
Author: szomiz
Date: Wed, 16 Apr 2008 16:01
9 lines
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