Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> XML & XSL
spenalzo
post
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&amp;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?


--------------------

Go to the top of the page
+Quote Post
spenalzo
post
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? :/


--------------------

Go to the top of the page
+Quote Post
Dominik
post
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] winksmiley.jpg ) a co za tym idze nowe technologie naja sie nijak to tej przegladarki.
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.


--------------------
Go to the top of the page
+Quote Post
spenalzo
post
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. sad.gif
Validatory wysypują się bo nie mam zdefiniowanego DTD i "nie znają" moich znaczników, więc znalezienie błedu raczej nioe jest proste.


--------------------

Go to the top of the page
+Quote Post
wassago
post
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.


--------------------
Go to the top of the page
+Quote Post
Dominik
post
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 smile.gif . 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.


--------------------
Go to the top of the page
+Quote Post
Seth
post
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
Go to the top of the page
+Quote Post
Dominik
post
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.


--------------------
Go to the top of the page
+Quote Post
Seth
post
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.
Go to the top of the page
+Quote Post
Dominik
post
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.


--------------------
Go to the top of the page
+Quote Post
Seth
post
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 winksmiley.jpg
Dla mnie tez EOT.
Go to the top of the page
+Quote Post
wassago
post
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.


--------------------
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%)
-----


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.
Go to the top of the page
+Quote Post
dragossani
post
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
Go to the top of the page
+Quote Post
spenalzo
post
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?


--------------------

Go to the top of the page
+Quote Post
shima
post
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...
Go to the top of the page
+Quote Post
spenalzo
post
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 :?


--------------------

Go to the top of the page
+Quote Post
shima
post
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 biggrin.gif

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 aaevil.gif


--------------------
Nie ma nic stałego prócz zmiany...
Go to the top of the page
+Quote Post
czerwoony
post
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.
Go to the top of the page
+Quote Post
MaKARON
post
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...
Go to the top of the page
+Quote Post

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: 22.08.2025 - 10:23