Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Struktura danych w pliku XML
Forum PHP.pl > Forum > XML, AJAX > XML
Riklaunim
Obmyślam "moduł" artykułów wykorzystujących plik XML do przetrzymywania danych - w tym zawierający w sobie nie tylko treść ale również np. grafiki i inne załączniki. Wstępny szkic pliku XML jest tutaj (przerobić .xml.txt na .xml) a prosty kod, który "załącza" do treści grafiki itd. wygląda tak:
  1. <?php
  2. $art = simplexml_load_file('wish.xml');
  3. // Wywołanie załącznika
  4. IF(isset($_GET['multimedia']) and isset($art->body->multimedia->$_GET['multimedia']->type))
  5. {
  6. header ($art->body->multimedia->$_GET['multimedia']->type);
  7. echo base64_decode($art->body->multimedia->$_GET['multimedia']->base);
  8. unset($art);
  9. exit();
  10. }
  11. elseIF(isset($_GET['multimedia']))
  12. {
  13. exit();
  14. }
  15. echo '<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body>';
  16.  
  17. preg_match_all('#[MEDIA=(.*?)]#es', $art->body->content, $media);
  18. IF(is_array($media[1]))
  19. {
  20. // tu dać imploda i strtr...
  21. foreach($media[1] as $val)
  22. {
  23. $art->body->content = str_replace('[MEDIA='.$val.']', $art->body->multimedia->$val->replace, $art->body->content);
  24. }
  25. }
  26.  
  27. echo $art->body->content;
  28. ?>
  29. </body></html>

Nie chodzi mi tutaj o kod ale o samą koncepcję schematu pliku artykułu tak by oferował on jak największe możliwości i był prosty w obsłudze... Główna kwestia to wstawianie do pliku innych plików jak grafik czy też innych plików. Zaleta - jeden plik daje gotowca ale jak się da dużo załączników to plik XML ma duży rozmiar i wczytanie go zajmie więcej czasu.

Druga sprawa to wielojęzyczność. Myślałem o podejściu typu:
Kod
<title><pl>Tytuł artykułu</pl><en>Article title</en></title>


Trzecia sprawa, czy SimpleXML lub DOM albo ińszy parser PHP5 mogą zwrócić wszystkie dane z czegoś takiego:
Kod
<title lang="pl" size="duzy" allowlepper="false">Tytuł artykułu</title>

Tj. tablicę/obiekt klucz/wartość ze znacznika.

Wszelkie opinie mile widziane smile.gif
bela
Ad. 3 Tak.
Ad. 2 Może tworzyć 2 pliki?
Ad. 1 Może mmedia w inne miejsca pchać a nie do bazy, a w bazie tylko info o nich?
Riklaunim
co do baz danych - chcę by "minimalna" wersja nie korzystała z baz danych - dopiero opcjonalny dodatek korzystałby z bazy danych do indeksowania stron i zamiast hierarchicznego/katalogowego listowania oferowałby niezależny sposób listowania. Najwyżej dam też możliwość przetrzymywania załączników nie-wyświetlanych w innym pliku (poza grafiką, flashem itd.)
Sh4dow
nie kozystal bym z tego
Kod
<title lang="pl" size="duzy" allowlepper="false">Tytuł artykułu</title>

oczywiscie jest mozliwosc do przetorzenie przez libxml bez najmniejszych prioblemow ale wersja ta:
Kod
<title>
  <pl>Tytuł artykułu</pl>
  <en>Article title</en>
</title>

Bedzie chyba latwiejsza przy naprzyklad uzyciu xpath, lepiej bedzie wyszukiwac i pobierac dane.

jesli chodzi o laczenie pliki w jeden plik xml to jakos byl bym ostrozny. przerobienie pliku ktory bedzie zajmowal oko 500kB i wiecej zacznie byc klopotliwe. Do tego jak by ktos chcial odczytywac tylko tytul i kawalek poczatkowego wpisu z artykulu to jakos mi sie nie widzi przetwarzania paru-parunastu plikow ktore zajmuje okolo 500-1000kB.
Jesli chodzi o nie kozystanie z bazy danych to OK ale jesli dodatkowe moduly maja miec mozliwosc podlaczenia sie do bazy to jest to troche nielogiczne. Dasz mozliwosc modulom tworzenia polaczenia z baza? czy zrobisz modul dla glownego systemu ? jesli bedzie planowane dla glownego systemu to sie to mija z celem. Pliki sa dobre bo nie trzeba bazy, ale jak jest baza to lepiej z niej kozystac.
Jelsi juz planujesz kozystac z php5 (tak wyszlo z twojego posta) to moze poprostu skozystaj z SQLite.
Riklaunim
Dobra, zrobię to jakoś po ludzku smile.gif Porozrzucam XMLa/dane po wpisie w bazie danych a all in one XML będzie jedną z opcji dodania wpisu. (podajesz 1 plik przygotowany wcześniej a skrypt wszystko sobie poukłada gdzie trzeba, rozwiąże konflikty w nazwach pliów itd.)

Co do znaczników w tagu to ja korzystać nie chcę lecz OpenOffice to robi:
Kod
<style:style style:name="P1" style:family="paragraph" style:parent-style-name="Standard">
<style:paragraph-properties fo:text-align="center" style:justify-single-word="false"/>
<style:text-properties style:font-name="FreeSans" fo:font-size="18pt" fo:font-style="italic" style:text-underline-style="solid" style:text-underline-width="auto" style:text-underline-color="font-color" fo:font-weight="bold" style:font-size-asian="18pt" style:font-style-asian="italic" style:font-weight-asian="bold" style:font-size-complex="18pt" style:font-style-complex="italic" style:font-weight-complex="bold"/>
</style:style>

Żeby OOfice->HTML działał w miarę inteligentnie trzeba będzie napastować parę bibliotek smile.gif
Jak ktoś chce się pobawić z dokumentami OOfica to wystarczy je rozpakować jako Zipy (OOfice 2.0*Beta ma nowy format OpenDocument OASIS, który się trochę różni od tego z wersji 1.* lecz oba to JARy - ZIPy)
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.