![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Nabyłem książkę "XML. Leksykon kieszonkowy" wyd. Helion i chcąc zmienić troche jeden z przykładów do własnych potrzeb mam taki plik:
[xml:1:1f763170b3] ?xml version="1.0" standalone="yes" ?> <?xml-stylesheet type="text/xsl" href="test.xsl" ?> <dane> <plik> <ID>16</ID> <nazwa_org>123.m3u</nazwa_org> <userid>4</userid> <czas>1069200139</czas> <opis>Wprowadź opis pliku</opis> <rozmiar>3340</rozmiar> <rodzaj>0</rodzaj> </plik> <plik> <ID>13</ID> <nazwa_org>logo.jpg</nazwa_org> <userid>4</userid> <czas>1069199825</czas> <opis>To jest opis</opis> <rozmiar>26039</rozmiar> <rodzaj>1</rodzaj> </plik> <plik> <ID>12</ID> <nazwa_org>index.php</nazwa_org> <userid>4</userid> <czas>1069193326</czas> <opis>Wprowadź opis pliku</opis> <rozmiar>44</rozmiar> <rodzaj>1</rodzaj> </plik> ... ... ... </dane>[/xml:1:1f763170b3] i mam do tego taki oto plik XSL: [xml:1:1f763170b3]<?xml version="1.0" ?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Format"> <xsl:template match="dane"> <table border="1" width="800" cellpadding="5" cellspacing="0" bordercolordark="#FFFFFF" bordercolorlight="#C0C0C0"> <tr><th width="2%" bgcolor="#CCCCCC"></th><th width="30%" bgcolor="#CCCCCC">Nazwa pliku</th> <th bgcolor="#CCCCCC" width="15%">Wlasciciel</th><th bgcolor="#CCCCCC" width="15%">Data</th> <th width="15%" bgcolor="#CCCCCC">Rozmiar</th><th width="25%" bgcolor="#CCCCCC">Opis</th></tr> <xsl:for-each select="plik"> <tr> <td align="center" bgcolor="#F5F5F5"><img src="file.gif"/></td> <td align="left" bgcolor="#F5F5F5"><a href="index.php?c=down&id=4"> <xsl:process select="nazwa_org"/> </a></td> <td align="center" bgcolor="#F5F5F5">user</td> <td align="center" bgcolor="#F5F5F5">data</td> <td align="center" bgcolor="#F5F5F5"> <xsl:process select="rozmiar "/></td> <td align="center" bgcolor="#F5F5F5"><a href="jakislink">Pobierz</a></td> </tr> </xsl:for-each> </table> </xsl:template> </xsl:stylesheet>[/xml:1:1f763170b3] Jest to zrobione w oparciu o przykład z ww książki. Ale jak można się domyślic - nie działa: - wyświetla sie nagłowek tabeli i jeden pusty wiersz - nie wiem czy tam powinno być xsl:process czy xsl:value-of, bo żadne nie działa - u mnie na IE5 plik XML sie wyswietla, u innych nie... Co jest? I drugie pytanie: czy dopuszczalne jest umieszczanei w taki sposób HTMLa? -------------------- |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Hmm... tak troche pokombinowałęm i wyrzuciłem cały HTML z XSLa zostawaiają jakiśtam tekst, ale nadal for-each sie nie wykonuje - może to struktura pliku XML jest zła? A może to ta książką jest do d..., skoro podany tam przykład o identycznej struktucze u nich niby działa, ale u mnie nie już nie chce? :/
-------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 339 Pomógł: 0 Dołączył: 17.06.2003 Skąd: Białystok Ostrzeżenie: (0%) ![]() ![]() |
Ja mam kilka uwag. Odrazu mowie ze nie szczeglowowych (poniewaz chwilowo nie mam czasu, jak troche znajde to przeanalizuje kod).
1. Jesli masz obawy co do poprawnosci plikow XML (jako well-formated i pozostalych) to poprostu a skozystaj z walidatora (zaden czlowiek tak szybko i skutecznie nie wylapie ewentualnych bledow jak automat). Np http://www.stg.brown.edu/service/xmlvalid/ lub cos innego (moze bardziej zaawansowanego) mozesz sobie zgooglowac. 2. Jesli masz obawy co do ksiazki to siegnij do oryginalu. Z tego co wiem jest to ksiazka O'Reilly wiec w Polsce nie trudno o to wydawnictwo. A wydawnictwo to jest chyba najbardziej profesjonalne ze wszystkich innych dlatego raczej jesli jakis blad wkradl sie do polskiej wersji w oryginale napewno zobaczysz (ewentualnie w erracie). 3. Od razu zaznaczam ze nie jest to reklama (lub antyreklama) jakiej kolwiek z przegladarek ale na IE 5.0 daleko nie zajedziesz. Nie ma co sie oszukiwac przegladarka ta jest bardzo stara (IE 6 jest tylko stara [czyli bez bardzo] ![]() 4. To juz tylko rada. Zalatw sobie jakis parser do XSLT (wtedu zobaczysz "kod" po transformacji - pozwoli Ci to zobaczyc co, gdzie i jak nie wyszlo). Jesli nie masz dalej nie bedizesz mial pomyslu na namiezenie bledu to zalatw sobie debbuger. -------------------- |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Ech... nadal kupa. Kolejna próba zapoznania się z XSL spełzła na niczym.
![]() Validatory wysypują się bo nie mam zdefiniowanego DTD i "nie znają" moich znaczników, więc znalezienie błedu raczej nioe jest proste. -------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Przyjaciele php.pl Postów: 701 Pomógł: 0 Dołączył: 26.06.2002 Skąd: Londyn Ostrzeżenie: (0%) ![]() ![]() |
~OT:
ostatnimi czasy bawilem sie XML, XSLT + php i niestety doszedlem do wniosku ze XSLT nie jest godne uwagi w takim stopniu jako parser niz php. co prawda uzywalem php do interpretowania pliku XSLT ale nie moglem dynamicznie zmieniac zawartosci w owym pliku, nawet po instalacji odpowiedniej klasy, gdy uzywalem tagow <php:eval></php:eval>, nic z tego nie wychodzilo i wywalalo mi blad.. takze php dalej zadzi jezeli mowa o interpretowaniu XML'a.. a XSLT schodzi na drugi plan. takie jest moje zdanie. -------------------- |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 339 Pomógł: 0 Dołączył: 17.06.2003 Skąd: Białystok Ostrzeżenie: (0%) ![]() ![]() |
To i ja sobie pozowle na ~OT:
Od razu pisze, ze nie jest moja intencja wywolanie wojny. I nie chcem, zeby ktos komentowal zarowno moja wypowiedz jak i wassago. Ale pozwole sobie napisac nie tyle sprosotowanie co inny punkt widzenia. Przedstawie tylko argumenty drugiej strony a niech czytelnicy sami wyciagna wnioski. 1. Uwazam, ze wassago "msci" sie torche na XSLT bo w jego wypowiedzi mozliwosci XSLT sa dyskredytowane a jak sam mapisal XSLT "bawil sie" krotko (nie mnie oceniac ale moze za krotko?). Dalej pisze, ze nic mu nie wychodzilo a to nie jest wina XSLT (zezeli by pokusic sie o skazywanie winnych czego nie jestem zwolennikiem to albo On sam jest winny albo php ale napewno nie XSLT) 2. I teraz chcem wyjasnic, ze nie jest to post skierowany przeciwko php (poniewaz innego tego rozdzaju jezyki radza sobie na tym polu jeszcze gorzej). A zupelnie odwrotnie uwazam, ze php w tej dziedzinie jest najlepsze (ale nie dosc dobre - prosze zrwocic uwage na to sformuowanie). Nie jest to juz napewno oglony atak na php bo jest to moj ulubiony (i to nie bez powodow) jezyk programowania czego dowodem jest moja obecnosc na tym forum ![]() -------------------- |
|
|
![]()
Post
#7
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 335 Pomógł: 6 Dołączył: 7.03.2002 Ostrzeżenie: (0%) ![]() ![]() |
Wiem, ze mialo byc bez komentarzy, ale nie zgadzam sie w jednej kwesti i nie chcial bym aby ludzie czytajacy Twoja wypowiedz byli przekonani o jej slusznosci.
Cytat 2. I teraz chcem wyjasnic, ze nie jest to post skierowany przeciwko php (poniewaz innego tego rozdzaju jezyki radza sobie na tym polu jeszcze gorzej). A zupelnie odwrotnie uwazam, ze php w tej dziedzinie jest najlepsze (ale nie dosc dobre - prosze zrwocic uwage na to sformuowanie).
ASP.NET jest znacznie lepiej wyposazone w klasy obrabiajace XSLT niz php. Trzeba tez zastrzec, ze sa one wbudowane w system, wiec nei trzeba je osobno dolaczac. Przykladem moze byc ten artykul: http://www.topxml.com/dotnet/articles/xslt/default.asp |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 339 Pomógł: 0 Dołączył: 17.06.2003 Skąd: Białystok Ostrzeżenie: (0%) ![]() ![]() |
Cytat ASP.NET jest znacznie lepiej wyposazone w klasy obrabiajace XSLT niz php. Trzeba tez zastrzec, ze sa one wbudowane w system, wiec nei trzeba je osobno dolaczac.
Przykladem moze byc ten artykul:http://www.topxml.com/dotnet/articles/xslt/default.asp Masz racje. Pewnie pomyslisz, ze to dziwne ale zgadzam sie z Toba w 100% tylko, ze roznica miedzy php (i java) a ASP jest to ze ASP robi to niezgodnie z W3C. -------------------- |
|
|
![]()
Post
#9
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 335 Pomógł: 6 Dołączył: 7.03.2002 Ostrzeżenie: (0%) ![]() ![]() |
ASP.NET robi to jak najbardziej zgodnei z ustaleniami W3C.
Natomiast mozna sie spierac o to jak IE je interpretuje ale to juz inny temat. |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 339 Pomógł: 0 Dołączył: 17.06.2003 Skąd: Białystok Ostrzeżenie: (0%) ![]() ![]() |
Cytat ASP.NET robi to jak najbardziej zgodnei z ustaleniami W3C.
Natomiast mozna sie spierac o to jak IE je interpretuje ale to juz inny temat. Absolutnie nie chodzi mi o IE bo tutaj to szkoda klawiatury zeby o tym czyms pisac. Chodzi o to, ze cala "otoczka" XML-a nie jest ogolnie poprawnie supportowana przez ASP. Oczywiscie jesli chodzi o XSLT moze jest z tym najlepiej jednak i tu sie znajdze... Chodzi dokladnie o to, ze jesli transformacje przebiega to HTML-a (bo juz z XHTML-em jest cieniutko) jest OK ale mam wrazenie, ze rozmawiamy o XML -> XML a jesli tak to jeden lub dwa z nich musi byc jakos opisany gramatycznie dla parsera. A wlasnie tutaj zaczynaja sie schody dla ASP bo Schema w ASP != W3C Schema. Schema te sa budowane na bazie DCD a wiadomo co to oznacza... Generalnie nie chcem sie wbijac w szczegoly szczegolnie ze nie czuje sie moco w ASP. Dla mnie EOT. -------------------- |
|
|
![]()
Post
#11
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 335 Pomógł: 6 Dołączył: 7.03.2002 Ostrzeżenie: (0%) ![]() ![]() |
Kiedys mialem stycznosc z schema z Oracla 9i i nie mialem problemu z "dopasowaniem" na jej bazie xml'a w asp.net. Wiec dlatego uwazam, ze w .NETcie trzymaja sie standardow. Poza tym web services w asp.net nie mogly by wymieniac danych miedzy klientami chociazby napsianymi w Javie gdyby standardy byly inne - a moga
![]() Dla mnie tez EOT. |
|
|
![]()
Post
#12
|
|
![]() Grupa: Przyjaciele php.pl Postów: 701 Pomógł: 0 Dołączył: 26.06.2002 Skąd: Londyn Ostrzeżenie: (0%) ![]() ![]() |
Cytat [..]
1. Uwazam, ze wassago "msci" sie torche na XSLT bo w jego wypowiedzi mozliwosci XSLT sa dyskredytowane a jak sam mapisal XSLT "bawil sie" krotko (nie mnie oceniac ale moze za krotko?). Dalej pisze, ze nic mu nie wychodzilo a to nie jest wina XSLT (zezeli by pokusic sie o skazywanie winnych czego nie jestem zwolennikiem to albo On sam jest winny albo php ale napewno nie XSLT)[..] nic z tych, zeczy moze zeczywiscie za krotko pracowalem z XSLT ale sokoro nie moglem generowac dynamicznie zawartosci owego pliku to po co mialem w tym robic.. podaj przyklad jakis. -------------------- |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 521 Pomógł: 0 Dołączył: 3.11.2003 Skąd: 3city Ostrzeżenie: (0%) ![]() ![]() |
Cytat 2. I teraz chcem wyjasnic, ze nie jest to post skierowany przeciwko php (poniewaz innego tego rozdzaju jezyki radza sobie na tym polu jeszcze gorzej). A zupelnie odwrotnie uwazam, ze php w tej dziedzinie jest najlepsze (ale nie dosc dobre - prosze zrwocic uwage na to sformuowanie).
Nie przesadzajmy z gloryfikacją php! "Inne tego rodzaju języki" to ASP.NET i Java. Co do pierwszego się nie wypowiadam, bo nie znam. Ale stwierdzenie, że Java radzi sobie w temacie XML gorzej niż php byłoby gigantycznym nadużyciem. Wręcz przeciwnie, w porównaniu z Javą trudno mówić o wsparciu XML ze strony php. Crimson, Xerces, Saxon, Xalan... JAXP, JDOM, JAXB... nawet SAX wymyślono dla Javy. W Javie (pod kątem aplikacji internetowych) wszystko oparte jest na XML - konfiguracja Tomcata, Struts, nawet jest cały framework wokół XSL (Cocoon). A php? Expat i Sablotron. Dobrze przynajmniej że w wersji 5 zamienili Expata na libxml, bo to porażka, żeby jedyny parser nie potrafił walidować nie tylko z XSD, ale nawet z DTD. Nie zrozumcie mnie źle - to nie jest krytyka php. No dobra, jest. php nie jest jeszcze dojrzały i jakby "przegapił" XML. Mamy 2 standardowe biblioteki do PDF i ani jednego dobrego parsera XML. Cytat A co pozwala nam na optymistyczne patrzenie na przod to to, ze php bardzo dynamicznie sie rozwija i wczesniej czy pozniej spelni sie moje (Wasze) mazenie o zadowalajacej "wspolpracy" z XSLT.
Niech najpierw zrobią zadowalającą współpracę x DTD/XSD, a potem wezmą sie za libxslt. |
|
|
![]()
Post
#14
|
|
![]() Grupa: Przyjaciele php.pl Postów: 398 Pomógł: 0 Dołączył: -- Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
W pelni zgadzam sie z hawkiem. Brak bibliotek obslugujacych w PHP4 walidacje XML zgodnie z XMLSchema to przkra niedogodnosc. Java ma ta sprawe zalatwiona lepiej. Nie ma sie potem co dziwic, ze najciekawsze projekty (np. FOP) sa robione pod Jave, a nie php. Zeby sie potem takim FOP'em pobawic, trzeba robic jakies ekwilibrystyczne sztuczki (w PEAR jest klasa do obslugi FOP z linii polecen bodajze).
-------------------- cease this long, long rest / wake and risk a foul weakness to live / when it all comes down / watch the smoke and bury the past again / sit and think what will come / raise your fears and cast them all away
|
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
No dobra, a wracając do głównego tematu tego postu.... Wie ktoś co może być nie tak?
-------------------- |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 245 Pomógł: 0 Dołączył: 9.09.2002 Ostrzeżenie: (0%) ![]() ![]() |
Cytat No dobra, a wracając do głównego tematu tego postu.... Wie ktoś co może być nie tak?
Spróbuj taką preambułę w XSL-u: [xml:1:a535ed60f4]<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">[/xml:1:a535ed60f4] i powiedz czy działa... Strzelam na zasadzie porównań, bo też zaczynam... -------------------- Nie ma nic stałego prócz zmiany...
|
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Nadal nic - sprawdzłem pod Operą 7.22 i IE 5.0
Przy okazji - jak wyciągnąć ze znacznika np. <ID>321</ID> wartość 321? W tej książce pisze raz <xsl:value-of...> a raz <xsl:process...> a nie jest jasno powiedziane co do czego :? -------------------- |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 245 Pomógł: 0 Dołączył: 9.09.2002 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Nadal nic - sprawdzłem pod Operą 7.22 i IE 5.0
Przy okazji - jak wyciągnąć ze znacznika np. <ID>321</ID> wartość 321? W tej książce pisze raz <xsl:value-of...> a raz <xsl:process...> a nie jest jasno powiedziane co do czego :? IE 5.0 ma problemy z XML-em - tak słyszałem. Opera 7.11 wyświetla mi co chciałem, ale nie tak jak chciałem (robi jeden wiersz z tabeli). Mozilla 1.4.1 rozumie wszystko ![]() Wybieranie zmiennych pracuje u mnie tak: [xml:1:932f73a579]<xsl:value-of select="costam"/>[/xml:1:932f73a579] ale o szczegóły nie pytaj, po prostu pracuje ![]() -------------------- Nie ma nic stałego prócz zmiany...
|
|
|
![]()
Post
#19
|
|
![]() Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 18.03.2004 Skąd: Białystok Ostrzeżenie: (0%) ![]() ![]() |
:idea: np. tak
test.xml [xml:1:83cba1864e] <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="test.xslt"?> <dane> <plik> <ID>16</ID> <nazwa_org>123.m3u</nazwa_org> <userid>4</userid> <czas>1069200139</czas> <opis>Wprowadź opis pliku</opis> <rozmiar>3340</rozmiar> <rodzaj>0</rodzaj> </plik> <plik> <ID>13</ID> <nazwa_org>logo.jpg</nazwa_org> <userid>4</userid> <czas>1069199825</czas> <opis>To jest opis</opis> <rozmiar>26039</rozmiar> <rodzaj>1</rodzaj> </plik> <plik> <ID>12</ID> <nazwa_org>index.php</nazwa_org> <userid>4</userid> <czas>1069193326</czas> <opis>Wprowadź opis pliku</opis> <rozmiar>44</rozmiar> <rodzaj>1</rodzaj> </plik> </dane> [/xml:1:83cba1864e] test.xslt [xml:1:83cba1864e] <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/> <xsl:template match="/"> <html> <head> <title>Dane XML</title> <style> @media all { table { font-family: Tahoma; font-size: 10pt; } } </style> </head> <body> <xsl:apply-templates select="dane"/> </body> </html> </xsl:template> <xsl:template match="dane"> <table border="1"> <tr> <th>ID</th> <th>nazwa_org</th> <th>userid</th> <th>czas</th> <th>opis</th> <th>rozmiar</th> <th>rodzaj</th> </tr> <xsl:for-each select="plik"> <tr> <td><xsl:value-of select="ID"/></td> <td><xsl:value-of select="nazwa_org"/></td> <td><xsl:value-of select="userid"/></td> <td><xsl:value-of select="czas"/></td> <td><xsl:value-of select="opis"/></td> <td><xsl:value-of select="rozmiar"/></td> <td><xsl:value-of select="rodzaj"/></td> </tr> </xsl:for-each> </table> </xsl:template> </xsl:stylesheet> [/xml:1:83cba1864e] xslt jest bardzo prosty i bardzo zawansowany. jak chcesz sie nim pobawic to polecam ci program Altova XML SPY 2004, to istny kombajn xml i takie transformacjie jak wyze zrobisz w 10m ,ale jak chcesz zeby to mialo rece i nogi to trzeba recznie. |
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 114 Pomógł: 1 Dołączył: 17.07.2003 Ostrzeżenie: (0%) ![]() ![]() |
http://mak.tuwima.net/projekty.php
Zajrzyjscie sobie do mnie, jest do sciagniecia pewien stary projekt z dosc ciekawymi arkuszami. Dodatkowo mozna na sronie zobaczyc dzialanie... |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 10:23 |