Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> Zarządzanie treścią
matid
post
Post #1





Grupa: Zarejestrowani
Postów: 362
Pomógł: 0
Dołączył: 18.02.2004
Skąd: Knurów

Ostrzeżenie: (0%)
-----


Zastanawiam się, jak rozwiązać w CMSie zarządzenie treścią. Na chwilę obecną mam mniej więcej coś takiego.

Tabela Content, zawierająca pola
id [ int(11) ]
xml [ text ]

Oprócz tego jest kilka dodatkowych pól umożliwiających tworzenie drzewa itp, ale na razie jest to nie ważne.

I teraz przykładowa treść xml dla folderu wygląda tak:
  1. <?xml version="1.0"?>
  2. <document type="folder">
  3. <title>Folder główny</title>
  4. <description>W tym folderze znajdują się wszystkie podelementy systemu.</description>
  5. </document>

Dla artykułu tak:
  1. <?xml version="1.0"?>
  2. <document type="article">
  3. <author>Mateusz 'matid' Drożdżyński</author>
  4. <timestamp>1113296158</timestamp>
  5. <title>Nowy lider projektu Debian</title>
  6. <description>Swoją kadencję jako lider projektu kończy właśnie Martin Michlmayr, a jego miejsce 17 kwietnia zajmie Branden Robinson wybrany w zakończonym wczoraj głosowaniu. Słów kilka o głosowaniu oraz nowowybranym liderze...</description>
  7. <content>Procedura głosowania w projekcie Debian różni się dość znacznie od tego do czego przyzwyczajeni jesteśmy choćby w wyborach prezydenckich. Głosy można oddawać na każdego kandydata podając dodatkowo wagę głosu. Tym sposobem każdy oprócz faworyzowania swojego kandydata nr 1, ma również wpływ na miejsca zajmowane przez resztę. Nic nie stoi na przeszkodzie by każdemu kandydatowi przyznać głos o największej wadze, ale nie będę się tutaj rozpisywał nad sensownością takiego postępowania ;)
  8.  
  9. Jak już wspomniałem wybory wygrał Branden Robinson, którego sylwetkę chciałbym w skrócie opisać. Branden jest deweloperem Debiana od roku 1998. Dotychczas głównie zajmował się opieką nad pakietami XFree86, a od 2001 roku zasiada w zarządzie Software in the Public Interest, Inc. Od 5 lat pracuje w firmie Progeny. W wyborach na lidera projektu startował nieprzerwanie od 2001 roku, jednak dopiero w tym roku odniósł sukces.
  10. O zamiarach Brandena jako lidera projektu można przeczytać w jego programie wyborczym. Dostępne jest również szczegółowe sprawozdanie z wyborów. Pozostaje tylko życzyć nowemu liderowi sukcesów i doczekania się nowego stabilnego wydania za jego kadencji ;)</content>
  11. </document>


A teraz pytania.

1. Czy to będzie wydajne? IMO średnio. Każde przeglądanie wymaga parsowania pliku XML, nie mówiąc już o wyświetleniu drzewa z tytułami (potrzeba pobrać wszystkie dzieci, wszystkim przeparsować XML i wyświetlić). Z wyszukiwaniem też będzie problem. Tak samo jak z wyświetlaniem np. wszystkich artykułów z danego folderu.
Dobrym rozwiązaniem wydaje się dopisanie do tego dobrego systemu cache i jakiejś wyszukiwarki z crowlerem zapisującym słowa kluczowe. Jeśli ktoś ma jakiś pomysł na dobre wyszukiwanie i cache to proszę się podzielić winksmiley.jpg

2. Jak rozwiązać wyświatlanie. Na chwilę obecną jest to obsługiwane przez zwykły parser XML, który zamienia mi ten dokument na tablicę, która najstępnie jest przekazywana do renderera (np. Smarty, itp.)
Zastanawiałem się także nad XSLT, ale nie bardzo wiem jak w PHP4 się do tego zabrać.
Teraz jest jeszcze kolejny problem, czyli templaty lokalne. Co jeśli chcę wyświetlać w jednym folderze artykuły w inny sposób niż w drugim? Obecnie rozwiązuje to za pomocą sekcji. Tworzę sobie powiedzmy sekcję na folderze głównym, skrypt przy wyświetlaniu elementu sprawdza najbadziej szczegółową (czyli jak mam Root->News->News_1 to najpierw sprawdza News, potem Root) w poszukiwaniu odpowiedniego szablonu. Wydaje się to dość dobrym rozwiązaniem, co o tym sądzicie?

Z góry dzięki za pomoc.

Ten post edytował matid 22.04.2005, 18:54:00
Go to the top of the page
+Quote Post
mike
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


IMO XML jest dobry do przenoszenia danych, przesyłania miedzy aplikacjami i tego typu rzeczy. Natomiast trzymanie w nim danych jak w bazie to zupełna pomyłka.
Na Twoim miejscu trzymałbym treści w bazie lub same adresy o plików, w których są treścia dodatkowo w bazie reszte informacji.
IMO XML do tego co robisz kompletnie sie nie nadaje.
Go to the top of the page
+Quote Post
matid
post
Post #3





Grupa: Zarejestrowani
Postów: 362
Pomógł: 0
Dołączył: 18.02.2004
Skąd: Knurów

Ostrzeżenie: (0%)
-----


Cytat(mike_mech @ 2005-04-22 22:36:42)
IMO XML jest dobry do przenoszenia danych, przesyłania miedzy aplikacjami i tego typu rzeczy. Natomiast trzymanie w nim danych jak w bazie to zupełna pomyłka.
Na Twoim miejscu trzymałbym treści w bazie lub same adresy o plików, w których są treścia dodatkowo w bazie reszte informacji.
IMO XML do tego co robisz kompletnie sie nie nadaje.

Moim zdaniem jest to dobre wyjście chociażby z tego względu, że przy wprowadzaniu danych nie jesteśmy ograniczeni strukturą bazy danych. AFAIK w wielu systemach jest to implementowane w ten sposób.
Go to the top of the page
+Quote Post
sobstel
post
Post #4





Grupa: Zarejestrowani
Postów: 853
Pomógł: 25
Dołączył: 27.08.2003
Skąd: Katowice

Ostrzeżenie: (0%)
-----


moim zdaniem także nie takie jest przeznaczenie XMLu. np. spróbuj mi teraz wyszukac wszystkei artykulu danej osoby, albo zrobic jakakolwiek wyszukiwarke. bedziesz przeszukiwal wszystkei pliki xml? optymalizacyjna klapa.


--------------------
"If debugging is the process of removing bugs, then programming must be the process of putting them in..."
sobstel.org
Go to the top of the page
+Quote Post
mike
post
Post #5





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


XML do konfiguracji systemu, owszem.
Ale do trzymania treści, ble.
Zgadzam się z poprzednikiem, a co z wyszukiwaniem, i pożądkowaniem danych.
Ich układem i przejrzystością.

A jeżeli mówisz że ogranicza cie struktura tabeli to robisz dwie: treści i arty. A nie wszystko w jednym pliku.

No i już nie wspomną o tym że takie pliki będe parsowane za każdym odświerzeniem strony, a to zajmuje duuuuużo czasu.

Powtażam pomysł chybiony.
Go to the top of the page
+Quote Post
matid
post
Post #6





Grupa: Zarejestrowani
Postów: 362
Pomógł: 0
Dołączył: 18.02.2004
Skąd: Knurów

Ostrzeżenie: (0%)
-----


Cytat(sopel @ 2005-04-22 23:59:01)
moim zdaniem także nie takie jest przeznaczenie XMLu. np. spróbuj mi teraz wyszukac wszystkei artykulu danej osoby, albo zrobic jakakolwiek wyszukiwarke. bedziesz przeszukiwal wszystkei pliki xml? optymalizacyjna klapa.

  1. SELECT id, xml
  2. FROM content WHERE xml LIKE "%<author>Mateusz 'matid' Drożdżyński</author>%";

A w ten sposób? Dalej podtrzymuje, że moim zdaniem jest to dobre rozwiązanie.

W tym temacie też polecają trzymanie danych w XMLu.

Ten post edytował matid 23.04.2005, 08:14:52
Go to the top of the page
+Quote Post
sobstel
post
Post #7





Grupa: Zarejestrowani
Postów: 853
Pomógł: 25
Dołączył: 27.08.2003
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Cytat(matid @ 2005-04-23 08:13:03)
  1. SELECT id, xml
  2. FROM content WHERE xml LIKE "%<author>Mateusz 'matid' Drożdżyński</author>%";

A w ten sposób? Dalej podtrzymuje, że moim zdaniem jest to dobre rozwiązanie.

trudno nazwać to wydajnym rozwiązaniem, zwłaszcza gdy przyjdzie ci wyciągać dane wg. bardziej złożonych kryteriów (co sam zresztą zauważyłeś w swoim poście). tak czy owak nikt tu raczej na siłę nie będzie Cię przekonywał. chciałeś opini i my tu swoją wyraziliśmy. dla mnie to się mija z celem.


--------------------
"If debugging is the process of removing bugs, then programming must be the process of putting them in..."
sobstel.org
Go to the top of the page
+Quote Post
matid
post
Post #8





Grupa: Zarejestrowani
Postów: 362
Pomógł: 0
Dołączył: 18.02.2004
Skąd: Knurów

Ostrzeżenie: (0%)
-----


Cytat(sopel @ 2005-04-23 09:30:01)
Cytat(matid @ 2005-04-23 08:13:03)
  1. SELECT id, xml
  2.  
  3. FROM content WHERE xml LIKE "%<author>Mateusz 'matid' Drożdżyński</author>%";

A w ten sposób? Dalej podtrzymuje, że moim zdaniem jest to dobre rozwiązanie.

trudno nazwać to wydajnym rozwiązaniem, zwłaszcza gdy przyjdzie ci wyciągać dane wg. bardziej złożonych kryteriów (co sam zresztą zauważyłeś w swoim poście). tak czy owak nikt tu raczej na siłę nie będzie Cię przekonywał. chciałeś opini i my tu swoją wyraziliśmy. dla mnie to się mija z celem.

No to jakie inne rozwiązanie proponujesz? Nie chcę być ograniczony strukturą bazy danych, bo jak ktoś będzie chciał dodać sobie jakieś dodatkowe pole np. do artykułu to nie powinien mieć z tym żadnych problemów. Oprócz tego najlepiej, jakby wszystko mogło leżeć w jednej tabeli.
Go to the top of the page
+Quote Post
hawk
post
Post #9





Grupa: Zarejestrowani
Postów: 521
Pomógł: 0
Dołączył: 3.11.2003
Skąd: 3city

Ostrzeżenie: (0%)
-----


Odróżnij treść artykułu od atrybutów artykułu. Autor to nie jest treść, tylko atrybut. Trzymanie atrybutów w XML tylko utrudnia wyszukiwanie. Trzymanie treści w bazie danych zapycha bazę.
Go to the top of the page
+Quote Post
mike
post
Post #10





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


Cytat(hawk @ 2005-04-23 09:32:45)
Odróżnij treść artykułu od atrybutów artykułu. Autor to nie jest treść, tylko atrybut. Trzymanie atrybutów w XML tylko utrudnia wyszukiwanie. Trzymanie treści w bazie danych zapycha bazę.

Wniosek ( IMO ):
- atrybuty w bazie: łatwośc wyszukiwania, "lekka" baza;
- treści w plikach ( adresy do nich w bazie ).

A i jeszcze powiedz dlaczego chcesz wszystko trzymać w jednej tabeli?
Ja wtedyodróżnisz np. news'a od artykułu? Dodatkowy atrybut.

No i czas dostępu do danych jest bardzo ważny. A parsując pliki XML czasu tego nie znajdziesz.

To by było na tyle w tym temacie z mojej strony.
Go to the top of the page
+Quote Post
aleksander
post
Post #11





Grupa: Przyjaciele php.pl
Postów: 742
Pomógł: 0
Dołączył: 14.12.2003
Skąd: Gdańsk, Trójmiasto

Ostrzeżenie: (0%)
-----


mike_mech - CMS nie rozróżnia artykułu od newsa. Dla niego wszystko jest treścią, tylko mogą być różne sposoby jej prezentacji (np rózne szablony smarty czy xslt).

W porządnych CMSach masz też system keszowania więc czas uzyskiwania dostępu do danych się zmniejsza :]
Go to the top of the page
+Quote Post
matid
post
Post #12





Grupa: Zarejestrowani
Postów: 362
Pomógł: 0
Dołączył: 18.02.2004
Skąd: Knurów

Ostrzeżenie: (0%)
-----


Cytat(hawk @ 2005-04-23 10:32:45)
Odróżnij treść artykułu od atrybutów artykułu. Autor to nie jest treść, tylko atrybut. Trzymanie atrybutów w XML tylko utrudnia wyszukiwanie. Trzymanie treści w bazie danych zapycha bazę.

Teraz planuję zrobić coś takiego.
Mam dokument XML (oczywiście z deklaracją DTD zgodną z moim systemem i jego DTD będzie w mojej bazie danych).
Importuję go do systemu. Parser zbiera sobie informacje o pliku, czyli rodzaj dokumentu (DTD), autora(-ów), datę utworzenia, modyfikacji, itp. Zapisuje to w bazie danych w odpowiedniej tabeli wraz z informacją na temat położenia pliku XML. Użytkownik, jeśli będzie chciał wyświetlić powiedzmy wszystkie pliki danego autora, szuka to w bazie. Baza zwraca nazwy plików XML.
Jeśli istnieje cache w postaci XHTML to jest ładowany, jeśli nie to za pomocą XSLT plik XML jest transformowany do XHTMLa i cachowany.
Użytkownik ma ładne wyświetlanie, ja mam dane w postaci XML, szukanie jest szybkie. Cache optymalny. Co myślicie o takim rozwiązaniu?
I teraz tylko rodzi się pytanie - jak rozwiązać przeszukiwanie treści artykułów...
Go to the top of the page
+Quote Post
hawk
post
Post #13





Grupa: Zarejestrowani
Postów: 521
Pomógł: 0
Dołączył: 3.11.2003
Skąd: 3city

Ostrzeżenie: (0%)
-----


A skąd parser weźmie autora itd? Z sufitu?
Go to the top of the page
+Quote Post
matid
post
Post #14





Grupa: Zarejestrowani
Postów: 362
Pomógł: 0
Dołączył: 18.02.2004
Skąd: Knurów

Ostrzeżenie: (0%)
-----


Cytat(hawk @ 2005-05-05 20:44:26)
A skąd parser weźmie autora itd? Z sufitu?

Nie z sufitu, tylko dokument XML będzie miał np. taką postać:
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <?xml-stylesheet type="text/xml" href="article.xsl"?>
  3. <!DOCTYPE article SYSTEM "article.dtd">
  4. <article>
  5.    <title>Mój artykuł</title>
  6.    <date>22.04.2005 18:30</date>
  7.    <author>Mateusz 'matid' Drożdżyński</author>
  8.    <content>
  9.        <intro>Lorem dolor sit amet, consectetuer adipiscing elit. Donec non purus vel metus pretium consequat. Aliquam arcu. Cras elementum sagittis nulla. Integer ac erat. Phasellus elementum, mauris quis adipiscing sollicitudin, arcu ligula tempor libero, ut convallis purus wisi sed wisi. Integer sed massa. Cras eu sapien non tortor pellentesque facilisis. Suspendisse potenti. Nunc nulla quam, accumsan eu, consequat eu, adipiscing vel, lorem. Integer molestie erat ut erat. Curabitur consequat. Aliquam ullamcorper pulvinar lectus. Donec ac lorem ut purus dictum venenatis.</intro>
  10.  
  11.        <chapter>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec non purus vel metus pretium consequat. Aliquam arcu. Cras elementum sagittis nulla. Integer ac erat. Phasellus elementum, mauris quis adipiscing sollicitudin, arcu ligula tempor libero, ut convallis purus wisi sed wisi. Integer sed massa. Cras eu sapien non tortor pellentesque facilisis. Suspendisse potenti. Nunc nulla quam, accumsan eu, consequat eu, adipiscing vel, lorem. Integer molestie erat ut erat. Curabitur consequat. Aliquam ullamcorper pulvinar lectus. Donec ac lorem ut purus dictum venenatis. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec non purus vel metus pretium consequat. Aliquam arcu. Cras elementum sagittis nulla. Integer ac erat. Phasellus elementum, mauris quis adipiscing sollicitudin, arcu ligula tempor libero, ut convallis purus wisi sed wisi. Integer sed massa. Cras eu sapien non tortor pellentesque facilisis. Suspendisse potenti. Nunc nulla quam, accumsan eu, consequat eu, adipiscing vel, lorem. Integer molestie erat ut erat. Curabitur consequat. Aliquam ullamcorper pulvinar lectus. Donec ac lorem ut purus dictum venenatis.</chapter>
  12.    </content>
  13. </article>
Go to the top of the page
+Quote Post
hawk
post
Post #15





Grupa: Zarejestrowani
Postów: 521
Pomógł: 0
Dołączył: 3.11.2003
Skąd: 3city

Ostrzeżenie: (0%)
-----


A jeżeli autor artykułu nie chce pisać wg tego DTD? To nie jest z niczym zgodne. Żaden edytor tego nie wspiera. Nikt tego nie zna. Język jest potwornie ubogi. Nie ma sposobu na wyróżnienie tekstu. Nie ma listingów. Wypunktowania. Tabelek. Obrazków. Odnośników. Niczego nie ma. Możesz albo zostawić taki format, pozbawiając się większości funkcjonalności, albo rozszerzyć go, pakując się w straszne bagno.

Tworzenie własnego formatu artykułów jest gigantyczną pracą, więc nie warto opierać na tym systemu. Jeżeli już, wyciągaj te informacje z DocBooka. A jeżeli już mówimy o CMS, to co będzie, jak ktoś będzie chciał umieścić coś innego niż taki artykuł?
Go to the top of the page
+Quote Post
chmolu
post
Post #16





Grupa: Zarejestrowani
Postów: 179
Pomógł: 0
Dołączył: 8.10.2004

Ostrzeżenie: (0%)
-----


Jeżeli dokument będzie przekształcany za pomocą XSLT, to warto poszukać edytora WYSIWYG, który polega na tym, że dokument jest transformowany w czasie pisania. Wystarczy wtedy stworzyć szablon XSLT i mamy obsługę dowolnego formatu w edytorze. Nie wiem, czy dobrze pamiętam, ale zdaje mi się, że TUTAJ powinien być taki edytor.
Go to the top of the page
+Quote Post
matid
post
Post #17





Grupa: Zarejestrowani
Postów: 362
Pomógł: 0
Dołączył: 18.02.2004
Skąd: Knurów

Ostrzeżenie: (0%)
-----


Cytat(hawk @ 2005-05-08 09:17:10)
A jeżeli autor artykułu nie chce pisać wg tego DTD? To nie jest z niczym zgodne. Żaden edytor tego nie wspiera. Nikt tego nie zna. Język jest potwornie ubogi. Nie ma sposobu na wyróżnienie tekstu. Nie ma listingów. Wypunktowania. Tabelek. Obrazków. Odnośników. Niczego nie ma. Możesz albo zostawić taki format, pozbawiając się większości funkcjonalności, albo rozszerzyć go, pakując się w straszne bagno.

Tworzenie własnego formatu artykułów jest gigantyczną pracą, więc nie warto opierać na tym systemu. Jeżeli już, wyciągaj te informacje z DocBooka. A jeżeli już mówimy o CMS, to co będzie, jak ktoś będzie chciał umieścić coś innego niż taki artykuł?

Planowałem rozszerzyć ten DTD o różne inne możliwości w stylu obrazków, podkreśleń, itd.
BTW - chciałem też dać możliwość uploadowania własnego DTD i XSLT.

A co do DocBook to muszę się zastanowić.

Aha, tak pozatym to nie jest tak, że system będzie przyjmował tylko i wyłącznie pliki XML. Na chwilę obecną mam w planach napisanie edytora, kŧóry na podstawie DTD będzie edytował formularz.
Czyli ktoś wybiera, że chce stworzyć artykuł, to na podstawie DTD artykułu dostanie do tego ładny formularz.

Ten post edytował matid 8.05.2005, 09:48:11
Go to the top of the page
+Quote Post
hawk
post
Post #18





Grupa: Zarejestrowani
Postów: 521
Pomógł: 0
Dołączył: 3.11.2003
Skąd: 3city

Ostrzeżenie: (0%)
-----


Jeżeli użytkownik może uploadować swoje własne DTD, to ja chcę zrobić takie, w którym autor artykułu przechowywany jest w tagu <czas>, a data utworzenia w tagu <autor>. Moje DTD, wolno mi. Zrób mi do tego parser.

A jeżeli na podstawie DTD będziesz robił formularz, to musisz napisać paser DTD. Co też nie jest proste. I co niby ten parser zrobi z DTD? Jak mu zapodam DTD do HTMLa, to ciekawe, co on mi wyprodukuje...
Go to the top of the page
+Quote Post
bigZbig
post
Post #19





Grupa: Zarejestrowani
Postów: 740
Pomógł: 15
Dołączył: 23.08.2004
Skąd: Poznań

Ostrzeżenie: (0%)
-----


@matid -> moim skromnym zdaniem zwyczajnie utrudniasz sobie robote. Na temat sensu uzywania xml w php wypowiedzialem sie juz w temacie [porada]tpl Vs. php. Sam tez juz odwiedzales ten temat ale moze nie jestes na biezaco ;-)


Jesli juz koniecznie zalezy Ci na zastosowaniu technologi xslt to zapoznaj sie z ponizszym przykladem:

  1. <?xml version="1.0" encoding="ISO-8859-2"?>
  2. <channel>
  3.   <item type="klamstwo">
  4.      <title>Microsoft końy rozwój Windows</title>
  5.      <url>http://www.nothere.com/foo/bar</url>
  6.   </item>
  7.  
  8.   <item type="klamstwo">
  9.      <title>George W. Bush znajduje Irak na mapie</title>
  10.      <url>http://www.jakisserwis.irq/news/4544.html</url>
  11.   </item>
  12.  
  13.   <item type="klamstwo">
  14.      <title>Grzegorz M. sprzedaje lodówki eskimosom</title>
  15.      <url>http://www.eskimostuff.nrd/ble/wombat.php</url>
  16.   </item>
  17. </channel>


  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/">
  3.  
  4. <xsl:output method="html" indent="no" encoding="utf-8"/>
  5.  
  6. <xsl:template match="/">
  7. <html>
  8. <head>
  9. <title>XSLT</title>
  10. </head>
  11. <body>
  12.  
  13.   <xsl:for-each select="/channel/item">
  14.      Pojedynczy News: <xsl:value-of select="title"/><br />
  15.   </xsl:for-each>
  16.  
  17. </body>
  18. </html>
  19. </xsl:template>
  20. </xsl:stylesheet>


  1. <?php
  2.  
  3. if (PHP_VERSION >= 5) {
  4.  // Emulate the old xslt library functions
  5.  function xslt_create() {
  6.  return new XsltProcessor();
  7.  }
  8.  
  9.  function xslt_process($xsltproc,
  10.  $xml_arg,
  11.  $xsl_arg,
  12.  $xslcontainer = null,
  13.  $args = null,
  14.  $params = null) {
  15.  // Start with preparing the arguments
  16.  $xml_arg = str_replace('arg:', '', $xml_arg);
  17.  $xsl_arg = str_replace('arg:', '', $xsl_arg);
  18.  
  19.  // Create instances of the DomDocument class
  20.  $xml = new DomDocument;
  21.  $xsl = new DomDocument;
  22.  
  23.  // Load the xml document and the xsl template
  24.  $xml->loadXML($args[$xml_arg]);
  25.  $xsl->loadXML($args[$xsl_arg]);
  26.  
  27.  // Load the xsl template
  28.  $xsltproc->importStyleSheet($xsl);
  29.  
  30.  // Set parameters when defined
  31.  if ($params) {
  32.  foreach ($params as $param => $value) {
  33.  $xsltproc->setParameter(&#092;"\", $param, $value);
  34.  }
  35.  }
  36.  
  37.  // Start the transformation
  38.  $processed = $xsltproc->transformToXML($xml);
  39.  
  40.  // Put the result in a file when specified
  41.  if ($xslcontainer) {
  42.  return @file_put_contents($xslcontainer, $processed);
  43.  } else {
  44.  return $processed;
  45.  }
  46.  
  47.  }
  48.  
  49.  function xslt_free($xsltproc) {
  50.  unset($xsltproc);
  51.  }
  52. }
  53.  
  54. $file_xml = 'chanel.xml';
  55. $file_xsl = 'chanel.xsl';
  56.  
  57. $arguments = array(
  58.  '/_xml' => file_get_contents($file_xml),
  59.  '/_xsl' => file_get_contents($file_xsl)
  60. );
  61.  
  62. $xsltproc = xslt_create();
  63. $html = (PHP_VERSION >= 5) ? xslt_process($xsltproc,'arg:/_xml','arg:/_xsl',null,$arguments) : xslt_process($xsltproc, './'.$file_xml, './'.$file_xsl);
  64.  
  65. xslt_free($xsltproc);
  66. print $html;
  67.  
  68. ?>


Jeszcze jedna uwaga. Zamiast DTD uzyj xsd - jest precyzyjniejszy.

Ten post edytował bigZbig 10.05.2005, 08:09:31


--------------------
bigZbig (Zbigniew Heintze) | blog.heintze.pl
Go to the top of the page
+Quote Post
matid
post
Post #20





Grupa: Zarejestrowani
Postów: 362
Pomógł: 0
Dołączył: 18.02.2004
Skąd: Knurów

Ostrzeżenie: (0%)
-----


Dzięki za rady. Zastanowię się jeszcze czy użyć XMLa w moich projektach. Zresztą spróbuję napisać coś więcej i sprawdzić wydajność.

A co do kodu - przecież tutaj mam własny kod dobrze działąjący i nie widzę większej różnicy co do twojej wersji.
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 14:12