Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: DTD
Forum PHP.pl > Forum > XML, AJAX > XML
koko89
Witam. Próbuje napisać książkę telefoniczną w xml, ale wpierw potrzebny mi dokument dtd, ale niestety nie potrafię go napisać. ciąglę coś jest źle.
Chciałem aby to wyglądało tak


ale co dalej i czy to dobrze nie wiem... prosze o pomoc.
Crozin
Przecież taki format XML-a do niczego się nie nadaje. Żadnego sensownego oddzielenia poszczególnych kontaktów, oraz "luźno" wrzucone nazwisko i litera? Nie, to nie przejdzie.
  1. <wpisy>
  2. <wpis id="123" kategoria="A"><!-- "kategoria" (zła nazwa; do poprawy) do szybkiego segregowania wpisów -->
  3. <nazwisko>Andrych</nazwisko>
  4. <kontakty>
  5. <kontakt>
  6. <imie>Anna</imie>
  7. <telefon>123 321 123</telefon>
  8. <adres>Adres #1</adres>
  9. </kontakt>
  10. <kontakt>
  11. <imie>Paweł</imie>
  12. <telefon>123 321 123</telefon>
  13. <adres>Adres #2</adres>
  14. </kontakt>
  15. </kontakty>
  16. </wpis>
  17. </wpisy>
Przygotowanie DTD dla takiego schematu powinno już być bardzo, bardzo łatwe (same standardowe struktury). Możliwe też będzie wygodne skorzystanie z narzędzi mapujących XML na obiekty.
koko89
wielkie dzięki za pomoc. przepraszam za kłopot, ale powiedz mi jeszcze jedno tak ma wyglądać DTD?
  1. <!ELEMENT książka telefoniczna (wpisy, nazwisko?, kontakt?)>
  2. <!ATTLIST książka telefoniczna
  3. lang CDATA #REQUIRED >
  4. <!ELEMENT wpisy (#PCDATA|wpis)*>
  5. <!ELEMENT nazwisko(#PCDATA)>
  6. <!ELEMENT kontakty (#PCDATA|kontakt)*>
  7. <!ELEMENT kontakt (#PCDATA|imie|telefon|adres)*>
  8.  
  9. <!ATTLIS ksiazka
  10. id ID #REQUIRED
  11. litera CDATA #REQUIRED
  12. nazwisko IDREFS #IMPLIED
  13. kontakty IDREFS #IMPLIED
  14.  
  15. <!ENTITY nbsp " ">

Crozin
1. Element książka-telefoniczna (spacja nie może być częścią nazwy elementu) raczej nie powinien posiadać elementów nazwisko i kontakt.
2. Element wpisy powinien przyjmować wyłącznie elementy wpis (bez #PCDATA) w ilości co najmniej jednego (+, zamiast *). Podobnie element kontakty.
3. Ogólnie powinieneś mieć bardziej restrykcyjny ten DTD.
koko89

  1. <!ELEMENT książka telefoniczna (wpisy)*>
  2. <!ATTLIST książka telefoniczna
  3. lang CDATA #REQUIRED >
  4. <!ELEMENT wpisy (wpis)+>
  5. <!ELEMENT wpis (nazwisko|kontakty)+>
  6. <!ELEMENT nazwisko (#PCDATA)>
  7. <!ELEMENT kontakty (kontakt)+>
  8. <!ELEMENT kontakt (#PCDATA|imie|telefon|adres)*>
  9.  
  10. <!ATTLIS ksiazka
  11. id ID #REQUIRED
  12. litera CDATA #REQUIRED
  13. nazwisko IDREFS #IMPLIED
  14. kontakty IDREFS #IMPLIED


tak powinno być?
Crozin
Jak już wspomniałem nazwa "ksiazka telefoniczna" jest niepoprawna.
Książka telefoniczna powinna mieć dokładnie jeden element wpisy, podobnie wpis jeden element kontakty/nazwisko. Kontakt raczej nie powinien móc przyjmować #PCDATA.
koko89
  1. <!ELEMENT ksiazka (wpisy)?>
  2. <!ATTLIST ksiazka
  3. lang CDATA #REQUIRED >
  4. <!ELEMENT wpisy (wpis)+>
  5. <!ELEMENT wpis (miasto)+>
  6. <!ELEMENT miasto (kontakty|br)+>
  7. <!ELEMENT kontakty (kontakt)+>
  8. <!ELEMENT kontakt (nazwisko|imie|telefon|ulica)*>
  9.  
  10. <!ATTLIS ksiazka
  11. id ID #REQUIRED
  12. litera CDATA #REQUIRED
  13. miasto IDREFS #IMPLIED
  14. kontakty IDREFS #IMPLIED>
  15. <!ELEMENT nazwisko (#PCDATA)*>
  16. <!ELEMENT imie (#PCDATA)*>
  17. <!ELEMENT telefon (#PCDATA)*>
  18. <!ELEMENT ulica (#PCDATA)*>
  19. <!ELEMENT br EMPTY >
  20.  
  21. <!ENTITY nbsp " " >
  22. <!ENTITY mdash "—" >
  23. <!ENTITY ndash "–" >
  24. <!ENTITY copy "ˆ" >
  25. <!ENTITY dots "…" >
  26. <!ENTITY bdquo "„" >
  27. <!ENTITY rdquo "”" >
  28. <!ENTITY raquo "ť" >
  29. <!ENTITY laquo "Ť" >



napisałem, wyświetliło mi dane w jednym rządku. co teraz mam zrobić?
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-2024 Invision Power Services, Inc.