Chciałbym przechować Pismo Święte w postaci pliku XML z podziałem na księgi,
rozdziały i wersety. W Internecie udało mi się znaleźć tylko jedno miejsce z
którego da się ściągnąć Biblię w tej postaci, ale wynikł pewien problem w
reprezentacji danych.
Otóż na samym początku, w księdze Genesis mamy następujący fragment:
[Cytuję]
(...)
<werset numer="4">Oto są dzieje początków po stworzeniu nieba i
ziemi.</werset>
<header_2>Drugi opis stworzenia człowieka</header_2>
Gdy Pan Bóg uczynił ziemię i niebo,
<werset numer="5">nie było jeszcze żadnego krzewu polnego na ziemi, ani
żadna trawa polna jeszcze nie wzeszła - bo Pan Bóg nie zsyłał deszczu na
ziemię i nie było człowieka, który by uprawiał ziemię</werset>
(...)
[/Cytuję]
I dalej mamy już normalnie. Zapytam pewnie jakiegoś biblistę, ale wygląda na
to, że werset czwarty jest przedzielony na dwa kawałki nagłówkiem drugiego
stopnia. Jestem też przekonany, że nie jest to jedyne miejsce takiej
postaci, a co gorsza będę musiał narzeźbić jakiś parser do poprawienia tego
błędu, bo cały tekst ma przeszło 190000 linijek i ręczne poprawki nie
wchodzą w grę.
No i tu mam zagwózdkę, bo nie wiem, jak to teraz ubrać w poprawnego XMLa.
Powyższy kod jest oczywiście nieprawidłowy, bo - przynajmniej za mojej
pamięci - gałąź może zawierać albo tekst albo podgałęzie, nigdy na raz. Mam
kilka pomysłów, ale nie jestem zadowolony z żadnego rozwiązania:
a) Ubrać urwany kawałek w znaczniki <werset> i nadać mu ten sam numer, jak
werset poprzedzający nagłówek. Wtedy jednak powstaje pewna
niejednoznaczność - co mam pokazać, jeśli użytkownik zażyczy sobie
przeczytać właśnie ten werset?
b) Podobnie, jak powyżej, ale dodać do znacznika jakiś parametr informujący
o tym, że jest to kontynucja urwanego wersetu, coś pokroju <werset
rodzaj="cd">. Tyle tylko, że wtedy będę musiał przygotować jakiś dodatkowy
mechanizm analizujący to, co jest za danym wersetem, bo może się okazać, że
werset jest połamany na kawałki, jak powyżej.
c) Zrezygnować z oznaczania wersetów znacznikami, natomiast wprowadzić
własne formatowanie wewnątrz rozdziału - przykładowo przyjąć, że @(1)
oznacza, że jest to początek pierwszego wersetu. Niby wygodne do
oprogramowania i przetworzenia, ale wydaje mi się, że jest to hackerskie
rozwiązanie, z którym będę miał później same problemy.
Rozwiązaniem byłoby oczywiście usunięcie znacznika nagłówka drugiego
poziomu, ale w ten sposób pozbywam się treści, co oczywiście jest
nieakceptowalne.
Czy macie może jakiś lepszy pomysł?
Pozdrawiam -- Spook.
--
! ._______. Warning: Lucida Console sig! //) !
! || spk || www.spook.freshsite.pl / _ """*!
! ||_____|| spook at op.pl / ' | ""!
! | ___ | tlen: spoko_ws gg:1290136 /. __/"\ '!
! |_|[]_|_| May the SOURCE be with you! \/) \ !
Różnic jest więcej. Fragmenty pochodzące z innych kodeksów (innych
tradycji) itd, np. przekazane czy to przez Septuagintę, czy z bezp. z
hebrajskiego itd.
czy np w Psalmach co do tekstu jest w zasadzie zgodność, ale cięcie na
konkretne psalmy jest w dwu tradycjach, i kilkadziesiąt psalmów ma
podwójną numerację.
Są wyjątkowo wersety nie czysto cyfrowe, ale a,b,c.
Więc numer to nie taki sobie prosty numeryk.
Jest gdzieś w ST (Daniel ?? Ezechiel?? nie pamiętam) odmienne cięcie na
rozdziały)
Podtytuły (w niektórych księgach) nie są integralną częścią tekstu
biblijnego, najczęściej są pochodną tradycyjnej wielowiekowej redakcji
(o dziwo nie spotkałem się by stało się to powodem wojny wyznaniowej).
Jak Gutenberg drukował swoją Biblię, JUŻ WTEDY przyjął starsze od siebie
konwencje wydawnicze.
( Wydana elektronicznie na CD z 15 lat temu Tysiąclatka szła na poziomie
wizualnym, jak widać w druku, tak było pocięte (konkretnie to był HTML w
dialekcie chyba FrontPage). Nie silili się na bardzo ambitną organizację. )
Gdybym to robił, odpuścił bym bardzo ścisłą hierarchię. Jest strumień
tekstu w wersji "max", są w nim opcjonalne fragmenty ... trzeba jakąś
buchalterię aby zapanować, ale strumień jest daną podstawową. Fragmencik
może być opcjonalny, ale nie spotkałem się (specem nie jestem) by była
sporna kolejność, więc z sekwencją raczej będzie ok, najwyżej elementy
opcjonalne
Jeżeli rozumiem o co Ci chodzi, to nieprawda.
Masz tak:
[39] element ::= EmptyElemTag
| STag content ETag
a `content' to:
[43] content ::= CharData? ((element | Reference | CDSect | PI
| Comment) CharData?)*
Czyli może i tekst, i podgałęzie i to w dowolnej liczbie.
JD
A tak BTW to po cholerę Ci biblia w XML-u?
[ciach mn�stwo linii]
> A tak BTW to po cholerďż˝ Ci biblia w XML-u?
Uczďż˝ tam jak odpowiadaďż˝ na usenecie.
--
<:> Roger, MoonWolf Out <:>|The power of the Force is
(::) (::)|insignificant next to this
(:) JID:moon...@jabberpl.org(:)|battle station
Zawziąłem się i wyrażeniami regularnymi połamałem całą dostępną w Internecie
Biblię Tysiąclecia (http://online.biblia.pl) do XMLa. Jeśli ktoś jest
zainteresowany, niech mi podeśle email, to mogę mu udostępnić.
�eby by�o �mieszniej, u mnie ju� te� nie. Ostatnio by�a tam informacja, �e
serwis jest chwilowo niedost�pny, a teraz mam ca�kowity brak odpowiedzi. W
ka�dym razie chodzi mi o wersj� dost�pn� pod linkiem "Biblia tysi�clecia
online" na stronie www.biblia.pl ("wersja" chrze�cija�ska, dla �cis�o�ci).
Je�li kto� jest zainteresowany, mam te� zrzuty HTMLi z kt�rych parsowa�em
tekst, jest tego oko�o 1.4k.
> Czy tekst w XML wykorzystasz w swoim programie przeszukuj�cym Bibli� ?
Najprawdopodobniej tak - przynajmniej w wersji na PDA. Je�li b�d� si� bawi�
w pisanie takiego programu na PC, to zapewne utworz� sobie niewielk� baz�
danych wyszukiwania na wz�r bazy PHPBB i wykorzystam Firebirda Embedded.
Pozdrawiam -- Spook.