Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: XML Schema lub DTD
Forum PHP.pl > Forum > XML, AJAX > XML
slash.
Do jednego z moich projektow mam zamiar przygotowac dokumentacje w XML'u jednak do tego jest potrzebne albo XML Schema albo DTD - jest DocBook.dtd czy cos takiego ale zastanawiam sie czy nie ma czegos takiego bardziej przystosowanego do tworzenia dokumentacji, odpowiednie sekcje, kod, uwaga itd.
Dominik
Cytat
Do jednego z moich projektow mam zamiar przygotowac dokumentacje w XML'u

Moze cos wiecej o tej "dokumentacji". Pytam bo to pozwoli na precyzyjnejsze odpowiadanie na Twoje pytania. Narazie trzeba sie nawic z jasnowidza winksmiley.jpg

Cytat
jednak do tego jest potrzebne albo XML Schema albo DTD

Jesli to ma byc parsowane to polecam DTD a jesli to projekt to XML Schema.

Cytat
czy nie ma czegos takiego bardziej przystosowanego do tworzenia dokumentacji, odpowiednie sekcje, kod, uwaga itd.

Tutaj calkowidzie nie rozumiem... Chodzi Ci o aplikacje? Jesli tak to polecam XML Spy. Ale poniewaz jest to XML to mozna pisac "z palca" we wszystkim, pomijajac hardcorowe notatniki mozna rowiez polecic polski program Infox.
chfast
Moge, korzystając z okazji, wtrącić pytanie?
Czym się różni plik DTD od XML Schema? Nigdy nie widziałem XML Schema i nie mam pojęcia na czym to polega.
adwol
Cytat
Moge, korzystając z okazji, wtrącić pytanie?
Czym się różni plik DTD od XML Schema? Nigdy nie widziałem XML Schema i nie mam pojęcia na czym to polega.

DTD określa tylko i wyłącznie strukturę dokumentu XML, natomiast XML Schema definiuje oprócz struktury, typy danych występujące w dokumencie oraz formalną ważność i ograniczenia zawartości. Na jego podstawie parser może stwierdzić czy zawartość danych jest zgodna z definicją tego rodzaju dokumentu.

Np. takie dwa kawałki dokumentu:
[xml:1:c4ce58be22]<data>31.02.2003</data>[/xml:1:c4ce58be22]
[xml:1:c4ce58be22]<data>15.03.2003</data>[/xml:1:c4ce58be22]
są z punktu widzenia DTD tak samo prawidłowe, mimo że pierwsza data jest oczywiście błędna. W DTD nie jesteś w stanie zapisać tego, natomiast w XML Schema, tak.

Schema sam jest dokumentem XML. Przykłady możesz znaleźć w specyfikacji.
Dominik
Cytat
DTD określa tylko i wyłącznie strukturę dokumentu XML, natomiast XML Schema definiuje oprócz struktury, typy danych występujące w dokumencie oraz formalną ważność i ograniczenia zawartości. Na jego podstawie parser może stwierdzić czy zawartość danych jest zgodna z definicją tego rodzaju dokumentu.

To nie jest do konca prawda. Oczywiscie w bardzo, bardzo wielkim uproszczeniu mozna tak myslec jednak, DTD troche zle potraktowales winksmiley.jpg bo w DTD w pewnym sensie mozna okreslac typ danych (oczywiscie jest to ograniczone w wielkim stopniu ale jednak jest) ograniczenia zawartosci rowniez wystepuja w postaci wyrazen regolarnych (tutaj rowniez nie jest to zaawansowane poniewaz ogranicza sie to do *, + itp a w XML Schema mozemy uzywac juz "pelnych" wyrazen Pearlowych).
Podsumowujac: DTD ma mniejsze mozliwosci niz XML Schema.

Dam jeden przyklad: powiedzmy ze chcemy opisac dokument XML i w nim wystapic moga tylko 4 znaczniki o nazwie "adres". W DTD mozemy (dzieki wyrazeniom regolarnym) opkerslic tylko ze moze wystepowac z przedzialy od 0 do +nieskonczonosci lub od 1 do +nieskonczonosci a w XML Schema mozemy okreslic dokladnie liczne w naczym wypadku 4.

O XML Schema mozna by wiele pisac ale uzupelniajac wypowiedz adwola o jeszcze jedna ceche: XML Schema jest zgodny z (prostym) XML-em a a DTD jest zgodny z (trudnym) SGML-em. Jak to sie ma do nas? Dla czlowieka XML Schema jest duzo bardziej czytelny niz DTD. DTD jest dobry dla parserow (maczyn)...
[oczywisice na dzien dzisiejszy rzeczywistosc przeczy na pozor powyzszemu stwierdzeniu poniewaz istnieja parsery DTD a do XML Schema raczej jest cieniutko. Dlatego musze to wyjasnic: DTD istnieje juz od kilkunastu lat dlatego programisci mieli duzo czasu na napisanie calkiem dobrych algorytwow a XML Schema dopiero raczkuje dlatego jeszcze raczkuja do niego parsery, poza tym DTD ma duzo mniejsze mozliwosci niz XML Schema dlatego latwiej napisac pelny support dla DTD niz dla XML Schema ale jesli bysmy wzieli wycinek XML Schema odpowiadajacy zastosowaniom DTD to algorytm odblugujacy XML Shcema bylby duzo prostczy niz DTD]
adwol
Cytat
To nie jest do konca prawda. Oczywiscie w bardzo, bardzo wielkim uproszczeniu mozna tak myslec jednak, DTD troche zle potraktowales bo w DTD w pewnym sensie mozna okreslac typ danych (oczywiscie jest to ograniczone w wielkim stopniu ale jednak jest) ograniczenia zawartosci rowniez wystepuja w postaci wyrazen regolarnych (tutaj rowniez nie jest to zaawansowane poniewaz ogranicza sie to do *, + itp

Czytając Twój opis, stwierdzam że nie różni się aż tak bardzo (,,w bardzo, bardzo wielkim uproszczeniu'') od mojego. Kwantyfikatory * i + w wyrażaniu regularnym troche słabo definiują typ i robią to na dość niskim poziomie abstrakcji, niezbyt odpowiednim dla klasycznych typów. Poza tym w tej postaci są dość prymitywne do opisania bardziej subtelnych niuansów.
Cytat
w XML Schema mozemy uzywac juz "pelnych" wyrazen Pearlowych

Pearl => Perl
Cytat
Dam jeden przyklad: powiedzmy ze chcemy opisac dokument XML i w nim wystapic moga tylko 4 znaczniki o nazwie "adres". W DTD mozemy (dzieki wyrazeniom regolarnym) opkerslic tylko ze moze wystepowac z przedzialy od 0 do +nieskonczonosci lub od 1 do +nieskonczonosci a w XML Schema mozemy okreslic dokladnie liczne w naczym wypadku 4.

Ale nie zapiszesz w DTD, że wewnątrz elementu może znaleźć się np. tylko i wyłącznie poprawna data i właśnie o taką złożoność (i wyższą) opisu mi chodzi.
Cytat
XML Schema jest zgodny z (prostym) XML-em a a DTD jest zgodny z (trudnym) SGML-em

Ja nie znam dobrze XML Schema (tyle co przeczytałem fragmenty specyfikacji), ale wydaje mi się, że DTD nie jest aż takie trudne. Na tyle ile miałem do czynienia z różnymi dokumentami SGMLowymi (więcej niż z XMLowymi) to DTD było łatwo czytelne, głównie za sprawą właśnie bardzo uproszczonej struktury. Być może norma ISO 8879 przewiduje znacznie bardziej złożoną strukturę, ale te które spotkałem w praktyce były łatwe w parsowaniu i czytaniu.

Z mojej strony to EOT, bo nie ma co dalej dyskutować. Twój post był wyczerpujący, poza tym masz pewnie większą wiedzę teoeretyczną z zakresu ML niż ja (znam je głównie z praktyki), więc nie zabieram głosu nt. teorii.
Dominik
Cytat
Kwantyfikatory * i + w wyrażaniu regularnym troche słabo definiują typ

Ake nie o to mi chodzilo. Typ definiuja #CDATA, #PCDATA, #ID, #NMTOKENS itp.

Cytat
Pearl => Perl

Zgadza sie. Wybacz jestem dysortografem smile.gif

Cytat
Ale nie zapiszesz w DTD, że wewnątrz elementu może znaleźć się np. tylko i wyłącznie poprawna data i właśnie o taką złożoność (i wyższą) opisu mi chodzi.

Oczywiscie, to wcale nie byl komentarz Twojego przykladu. Poprostu podalem drugi.

Cytat
Być może norma ISO 8879 przewiduje znacznie bardziej złożoną strukturę, ale te które spotkałem w praktyce były łatwe w parsowaniu i czytaniu.

Tak wlasnie jest. Po za tym IMHO latwiej czytac cos co ma mniej regul (gramatyki) in to co ma wiele regul.

Cytat
Z mojej strony to EOT, bo nie ma co dalej dyskutować.

OK, mojej strony tez EOT.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.