Thread View: pl.comp.xml
11 messages
11 total messages
Started by tojest5
Sun, 27 Apr 2008 21:10
xslt - zmiana formatu danych
Author: tojest5
Date: Sun, 27 Apr 2008 21:10
Date: Sun, 27 Apr 2008 21:10
45 lines
2220 bytes
2220 bytes
Witam serdecznie, Mam dane w xml i potrzebuję stworzyć plik tekstowy: Wiem tylko tyle, że xslt to zrobi, przy pomocy wyrażeń xpath, Proszę o pomoc. xml: <caly> <cos><podcos>nie wazne</podcos></cos> <zestaw>kol k2;dd;ss</zestaw> <rzecz1><obszar1><k1>t</k1><k2>f</k2></obszar1><obszar2><k1>l</ k1><k2>d</k2></obszar2></rzecz1> <rzecz1><obszar1><k2>t</k2></obszar1><obszar2><k1>2</k1></obszar2></ rzecz1> <rzecz1><obszar1><k2>3t</k2></obszar1><obszar2><k1>2</k1><k2>ed</k2></ obszar2></rzecz1> <rzecz2><obszar1><k2></k2></obszar1><obszar2><k1>2</1></obszar2></ rzecz2> </rzecz3> </rzecz4> </rzecz3> <rzecz1><obszar1><k1>t</k1><k2>d</k2><obszar2<k2>tre</k2></obszar2></ rzecz1> <rzecz2><obszar1><k2></k2></obszar1><obszar2><k1>2</1></obszar2></ rzecz2> </caly> plik wynikowy to tekst o wartościach węzłów oddzielonych średnikami, gdzie każdy kolejny wiersz to łopatologicznie kolejna rzecz1: szablon: /caly/zestaw;/caly/rzecz1/obszar2/k1;/caly/rzecz1/obszar1/k1;/caly/ rzecz1/obszar1/k2 plik wynikowy: kol k2;dd;ss;l;t;f kol k2;dd;ss;2;;t kol k2;dd;ss;2;;3t kol k2;dd;ss;;t;d jaki xslt do tego, proszę? Pozdrawiam Redi_S
Re: xslt - zmiana formatu danych
Author: szomiz
Date: Mon, 28 Apr 2008 07:45
Date: Mon, 28 Apr 2008 07:45
22 lines
1636 bytes
1636 bytes
Użytkownik <tojest5@gmail.com> napisał w wiadomości news:ac885687-be4d-46ec-8077-8efeeb51d700@2g2000hsn.googlegroups.com... Witam serdecznie, > Mam dane w xml i potrzebuję stworzyć plik tekstowy: > Wiem tylko tyle, że xslt to zrobi, przy pomocy wyrażeń xpath, > Proszę o pomoc. Czy doszedles juz do czegos wiecej? >xml: To nie jest xml. W tym sa bledy. > jaki xslt do tego, proszę? No chociaz poczatek transformacji z jednym szablonem po ktorym widac, ze cos zrobiles... Bo gotowy to 300 + VAT ;-) sz.
Re: xslt - zmiana formatu danych
Author: tojest5
Date: Mon, 28 Apr 2008 18:49
Date: Mon, 28 Apr 2008 18:49
54 lines
2898 bytes
2898 bytes
On 28 Kwi, 09:45, "szomiz" <szo...@kocha.dostawac.reklamy.przez.net> wrote: > Użytkownik <toje...@gmail.com> napisał w wiadomościnews:ac885687-be4d-46ec-8077-8efeeb51d700@2g2000hsn.googlegroups.com... > Czy doszedles juz do czegos wiecej? > Właściwie to do niczego więcej nie doszedłem: <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="text" /> <xsl:template match="/"> <xsl:apply-templates select="/caly/rzecz1" /> </xsl:template> <xsl:template match="/caly/rzecz1/obszar2" > <xsl:value-of select="/caly/rzecz1/obszar2/k1" />;<xsl:value-of select="/caly/rzecz1/obszar1/k1" />;<xsl:value-of select="/caly/rzecz1/ obszar1/k2" /> </xsl:template> </xsl:stylesheet> Zupełnie nie wiem jak się zabrać za wyswietlenie wartości <zestaw> > >xml: > > To nie jest xml. W tym sa bledy. > <caly> <cos><podcos>nie wazne co</podcos></cos> <zestaw>kol k2;dd;ss</zestaw> <rzecz1><obszar1><k1>t</k1><k2>f</k2></obszar1><obszar2><k1>l</ k1><k2>d</k2></obszar2></rzecz1> <rzecz1><obszar1><k2>t</k2></obszar1><obszar2><k1>2</k1></obszar2></ rzecz1> <rzecz1><obszar1><k2>3t</k2></obszar1><obszar2><k1>2</k1><k2>ed</k2></ obszar2></rzecz1> <rzecz2><obszar1><k2></k2></obszar1><obszar2><k1>2</k1></obszar2></ rzecz2> <rzecz3 /> <rzecz4 /> <rzecz3 /> <rzecz1><obszar1><k1>t</k1><k2>d</k2></obszar1><obszar2><k2>tre</k2></ obszar2></rzecz1> <rzecz2><obszar1><k2></k2></obszar1><obszar2><k1>2</k1></obszar2></ rzecz2> </caly> dzięki za zainteresowanie Redi_s
Re: xslt - zmiana formatu danych
Author: szomiz
Date: Mon, 28 Apr 2008 19:47
Date: Mon, 28 Apr 2008 19:47
32 lines
2131 bytes
2131 bytes
Użytkownik <tojest5@gmail.com> napisał w wiadomości
news:f507be36-a704-42db-8523-d43092cdc01b@s50g2000hsb.googlegroups.com...
> Zupełnie nie wiem jak się zabrać za wyswietlenie wartości <zestaw>
<xsl:apply-templates select="/caly/zestaw"/>
> >xml:
>
> To nie jest xml. W tym sa bledy.
W tym, po zlamaniu linii rowniez - wrzucaj przyklady na jakis serwer i
podawaj linki.
Troche szkoda, ze jestes na slusznym tropie rozwiazania problemu ;)
Bo na tym przykladzie dalo by sie fajnie pokazac zastosowania osi w
/omijaniu/ dzialania szablonow wbudowanych.
Bo mam niejakie wrazenie, ze /zadzialanie/ konstrukcji:
...
> <xsl:apply-templates select="/caly/rzecz1" />
...
<xsl:template match="/caly/rzecz1/obszar2" >
...
Nie jest do konca oczywiste dla wiekszosci /stosowaczy/ transformacji.
sz.
Re: xslt - zmiana formatu danych
Author: szomiz
Date: Tue, 29 Apr 2008 08:14
Date: Tue, 29 Apr 2008 08:14
4 lines
1293 bytes
1293 bytes
Oj oj, calkiem nie tak. Imbirowka poprawia samopoczucie, ale stepia czujnosc ;-) sz.
Re: xslt - zmiana formatu danych
Author: szomiz
Date: Tue, 29 Apr 2008 08:33
Date: Tue, 29 Apr 2008 08:33
54 lines
2926 bytes
2926 bytes
Użytkownik "szomiz" <szomiz@kocha.dostawac.reklamy.przez.net> napisał w
wiadomości news:fv5a0c$sm4$1@nemesis.news.neostrada.pl...
> <xsl:apply-templates select="/caly/zestaw"/>
<xsl:value-of select="/caly/zestaw"/>
I w tym miejscu dokladnie tak, sciezka bezwzgledna, bo chodzi o ten jeden
konkretny wezel w dokumencie.
> <xsl:template match="/caly/rzecz1/obszar2" >
Jakie jest uzasadnienie dla wpisywania powyzej calej sciezki? Samo
match="obszar2" zadziala tak samo.
> <xsl:value-of select="/caly/rzecz1/obszar2/k1" />
A tutaj zdecydowanie nie tak.ten zapis spowoduje, ze dla kazdego obszar 2
dostaniesz zestaw danych _pierwszego_ wystapienia obszar 2.
<xsl:value-of select="k1" />
zwroci wartosc lokalna.
Imbirowka poprawia samopoczucie, ale stepia czujnosc ;-)
Popatrz na sprawe nieco inaczej. Chcesz, aby wiersz wyniku generowal sie dla
konkretnych elementow wystepujacych w dokumencie. Ktore to elementy?
Zalozmy, ze rzecz1 (chociaz na oko wydaje, ze obszar1, obszar2...).
Blokujesz wykonanie wbudowanych szablonow, ktore "nie prowadza" do
interesujacych cie elementow:
<xsl:template match="*[not(.//rzecz1)]"/>
Ladniej bylo by napisac: *[not(descendant::rzecz1)], ale to szczegol.
<xsl:template match="rzecz1">
<xsl:value-of .../>
...
<xsl:text> </xsl:text>
</xsl:template-match>
I te dwa szablony w transformacji powinny wystarczyc.
To dla przypadku, w ktorym _wiesz_ jakie pola maja sie znalezc w odpowiedzi.
Transformacja, ktora sama okresli liczbe pol w wierszu, to /troche/ inny
problem.
sz.
P.S. Na prawde nik nie zauwazyl, ze wczoraj napisalem w watku glupoty?
Re: xslt - zmiana formatu danych
Author: tojest5
Date: Tue, 29 Apr 2008 10:37
Date: Tue, 29 Apr 2008 10:37
66 lines
3595 bytes
3595 bytes
On 29 Kwi, 10:33, "szomiz" <szo...@kocha.dostawac.reklamy.przez.net> wrote: > Użytkownik "szomiz" <szo...@kocha.dostawac.reklamy.przez.net> napisał w > wiadomościnews:fv5a0c$sm4$1@nemesis.news.neostrada.pl... > > Popatrz na sprawe nieco inaczej. Chcesz, aby wiersz wyniku generowal sie dla > konkretnych elementow wystepujacych w dokumencie. Ktore to elementy? podaje ścieżki do tych elementów (jeden wiersz) (średnik to wartość <xsl:text> i odgranicza kolejne pola w wierszu). caly/zestaw ; /caly/rzecz1/obszar2/k1 ; /caly/rzecz1/obszar1/k1 ; /caly/rzecz1/obszar1/k2 czyli w wyniku elementy te nie są ułożone w takiej kolejności jak ma to miejsce w xml. wartość <zestaw> powtarza się na początku każedego wiersza, czyli jest pierwszym polem, natomiast ilość wierszy jest uzależniona wystąpieniem <rzecz1> dlatego pierwszą regułę dałem: <xsl:apply-templates select = "rzecz1"> jako ograniczenie do przetwarzania konkretnych elementów. następna reguła to <xsl:template match="rzecz1"> <xsl:value-of select="/caly/zestaw/text()"> czyli dla napotaknego rzecz1 wstaw text() z <zestaw> i tu powinny być wartości konkretnych elementów wykazanych ww. Nie wiem jak blokować regułę wbudowaną w przypadku gdy kolejne elementy mają być wyświetlone w różnej kolejności. - skoro reguła wbudowana przetwarza je właśnie po kolei. > Zalozmy, ze rzecz1 (chociaz na oko wydaje, ze obszar1, obszar2...). > > Blokujesz wykonanie wbudowanych szablonow, ktore "nie prowadza" do > interesujacych cie elementow: > > <xsl:template match="*[not(.//rzecz1)]"/> ok, wykorzystam > <xsl:template match="rzecz1"> > <xsl:value-of .../> > ... > <xsl:text> </xsl:text> > </xsl:template-match> > > I te dwa szablony w transformacji powinny wystarczyc. > To dla przypadku, w ktorym _wiesz_ jakie pola maja sie znalezc w odpowiedzi. > Transformacja, ktora sama okresli liczbe pol w wierszu, to /troche/ inny > problem. Tego się obawaiłem - transformacja musi określić tutaj liczbę pól - zawsze musi ich być 4, bez względu czy dany element jest, czy też go nie ma dzięki! Redi_S
Re: xslt - zmiana formatu danych
Author: szomiz
Date: Tue, 29 Apr 2008 10:56
Date: Tue, 29 Apr 2008 10:56
43 lines
2816 bytes
2816 bytes
Użytkownik <tojest5@gmail.com> napisał w wiadomości
news:5bc27a1c-f3c1-4278-ba9d-b94b7d671503@59g2000hsb.googlegroups.com...
> caly/zestaw ; /caly/rzecz1/obszar2/k1 ; /caly/rzecz1/obszar1/k1 ;
> /caly/rzecz1/obszar1/k2
Operujac bezwzglednymi sciezkami wprowadzasz zamieszanie :(
_Bedac_ w elemencie rzecz1 potrzebujesz:
/caly/zestaw - tutaj sciezka bezwzgledna jest ok
obszar2/k1 - a odtad juz wzgledne
obszar2/k1
...
> <xsl:value-of select="/caly/zestaw/text()">
To text() na koncu zasadniczo nie jest potrzebne.
> i tu powinny być wartości konkretnych elementów wykazanych ww.
Skorzystaj ze sciezek wzglednych...
> Nie wiem jak blokować regułę wbudowaną w przypadku gdy kolejne
> elementy mają być wyświetlone w różnej kolejności.
> - skoro reguła wbudowana przetwarza je właśnie po kolei.
Tylko wtedy, gdy zrobisz apply-templates. Jezeli wrzucisz te wartosci przez
value-of w odpowiedniej kolejnosci - nic wiecej sie nie wykona.
>> To dla przypadku, w ktorym _wiesz_ jakie pola maja sie znalezc w
>> odpowiedzi.
>> Transformacja, ktora sama okresli liczbe pol w wierszu, to /troche/ inny
>> problem.
> Tego się obawaiłem - transformacja musi określić tutaj liczbę pól -
> zawsze musi ich być 4, bez względu czy dany element jest, czy też go
>nie ma
Jezeli zawsze ma ich byc 4 to nie musi. Ty to wiesz, wpisujesz wszystkie jak
ktorejs nie bedzie, to value-of nic nie zwroci. Zaden klopot.
sz.
Re: xslt - zmiana formatu danych
Author: tojest5
Date: Tue, 29 Apr 2008 13:26
Date: Tue, 29 Apr 2008 13:26
24 lines
2409 bytes
2409 bytes
On 29 Kwi, 12:56, "szomiz" <szo...@kocha.dostawac.reklamy.przez.net> wrote: > > caly/zestaw ; /caly/rzecz1/obszar2/k1 ; /caly/rzecz1/obszar1/k1 ; > > /caly/rzecz1/obszar1/k2 > > Operujac bezwzglednymi sciezkami wprowadzasz zamieszanie :( > > _Bedac_ w elemencie rzecz1 potrzebujesz: > /caly/zestaw - tutaj sciezka bezwzgledna jest ok > obszar2/k1 - a odtad juz wzgledne > obszar2/k1 > ... > Skorzystaj ze sciezek wzglednych... ok, już chyba zakumałem o co chodzi z adresowanie względnym i bezwzględnym - to, że bezwzględnie przy value-of select pobiera wartości zawsze z pierwszego napotkanego elementu pasującego do ścieżki - bez względu ile takich elementów jest. Względnie pobiera z aktualnie przetwarzanego elementu. Niestety nie mam jak narazie tego sprawdzić. hough Dzięki i pozdrawiam Redi_S
Re: xslt - zmiana formatu danych
Author: szomiz
Date: Tue, 29 Apr 2008 13:33
Date: Tue, 29 Apr 2008 13:33
12 lines
1816 bytes
1816 bytes
Użytkownik <tojest5@gmail.com> napisał w wiadomości news:804667d5-9bd0-4ba4-b687-0589bf5bf233@d45g2000hsc.googlegroups.com... > Niestety nie mam jak narazie tego sprawdzić. hough Masz ;-) X-HTTP-UserAgent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727),gzip(gfe),gzip(gfe) hough
Re: xslt - zmiana formatu danych
Author: szomiz
Date: Fri, 06 Jun 2008 20:55
Date: Fri, 06 Jun 2008 20:55
21 lines
2224 bytes
2224 bytes
Użytkownik <tojest5@gmail.com> napisał w wiadomości news:804667d5-9bd0-4ba4-b687-0589bf5bf233@d45g2000hsc.googlegroups.com... > ok, już chyba zakumałem o co chodzi z adresowanie względnym i > bezwzględnym - to, że bezwzględnie przy value-of select pobiera > wartości zawsze z pierwszego napotkanego elementu pasującego do Kurde - nie tak. value-of _zawsze_ pobiera piewrsza pasujaca do sciezki wartosc. > ścieżki - bez względu ile takich elementów jest. Względnie pobiera z >aktualnie przetwarzanego elementu. Nie. Pobiera _bezwzglednie_ pierwsza pasujaca. Ale w takich zastosowaniach/uzyciach, pierwsza pasujaca wartosc wynikajaca ze sciezki wzglednej bedzie mniej glupia (a czesto wlasciwa) niz wynikajaca z prostej bezwzglednej. sz.
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads