Thread View: pl.comp.xml
11 messages
11 total messages
Started by pbk++
Thu, 03 Apr 2008 06:01
Jak sprawdzić czy liczba
Author: pbk++
Date: Thu, 03 Apr 2008 06:01
Date: Thu, 03 Apr 2008 06:01
26 lines
1640 bytes
1640 bytes
Witam Szukam, szukam i nie mogę trafić. Jak sprawdzić czy zawartość elementu jest liczbą? Np. mam kod pocztowy, w Polsce ma format 99-999. Chcę sprawdzić czy na pozycjach 1-2, 4-6 są liczby. Robię to w ten sposób: number(concat(substring(@KodPocztowy, 1,2), substring(@KodPocztowy, 4,3))). Daje mi to w rezultacie liczbę. Ale jak sprawdzić czy wynik przekształcenia jest liczbą. Chcę użyć tego w <xsl:if>. Własnym sumptem wymyśliłem takiego potworka: <xsl:if test="not(number(concat(substring(@KodPocztowy, 1,2), substring(@KodPocztowy, 4,3))) >= '0' and number(concat(substring(@KodPocztowy, 1,2), substring(@KodPocztowy, 4,3) )) < '99999') "> Zdaje się, że działa. Ale jak zapisać warunek inaczej, krócej, bardziej elegancko. -- Piotrek
Re: Jak sprawdzić czy liczba
Author: szomiz
Date: Thu, 03 Apr 2008 06:44
Date: Thu, 03 Apr 2008 06:44
11 lines
1420 bytes
1420 bytes
Użytkownik "pbk++" <jbond007@free.polbox.pl> napisał w wiadomości news:ft1ru8$6rg$1@atlantis.news.neostrada.pl... > Szukam, szukam i nie mogę trafić. Jak sprawdzić czy zawartość elementu > jest liczbą? Jezeli: translate($zmienna,'0123456789','')='' to $zmienna jest albo liczba calkowita, albo jest puste. sz.
Re: Jak sprawdzić czy liczba
Author: szomiz
Date: Thu, 03 Apr 2008 06:52
Date: Thu, 03 Apr 2008 06:52
11 lines
1421 bytes
1421 bytes
Użytkownik "pbk++" <jbond007@free.polbox.pl> napisał w wiadomości news:ft1ru8$6rg$1@atlantis.news.neostrada.pl... > Szukam, szukam i nie mogę trafić. Jak sprawdzić czy zawartość elementu > jest liczbą? Jezeli: translate($zmienna,'0123456789','')='' to $zmienna sklada sie wylacznie z cyfr albo jest pusta. sz.
Re: Jak sprawdzić czy liczba
Author: pbk++
Date: Fri, 04 Apr 2008 11:16
Date: Fri, 04 Apr 2008 11:16
19 lines
1509 bytes
1509 bytes
szomiz pisze: > Użytkownik "pbk++" <jbond007@free.polbox.pl> napisał w wiadomości > news:ft1ru8$6rg$1@atlantis.news.neostrada.pl... > >> Szukam, szukam i nie mogę trafić. Jak sprawdzić czy zawartość elementu >> jest liczbą? > > Jezeli: > translate($zmienna,'0123456789','')='' > to $zmienna sklada sie wylacznie z cyfr albo jest pusta. Dziękuję. Inny problem. Chcę w transformowanym dokumencie w atrybucie zapisać xpath do przetwarzanego dokumentu. Jak wyłuskać xpath? -- Piotrek
Re: Jak sprawdzić czy liczba
Author: szomiz
Date: Fri, 04 Apr 2008 11:54
Date: Fri, 04 Apr 2008 11:54
14 lines
1613 bytes
1613 bytes
Użytkownik "pbk++" <jbond007@free.polbox.pl> napisał w wiadomości news:ft533q$l3e$1@nemesis.news.neostrada.pl... > Inny problem. Chcę w transformowanym dokumencie w atrybucie zapisać xpath > do przetwarzanego dokumentu. Jak wyłuskać xpath? xPath dokumentu? A nie elementu? Jak ma byc wyrazana sciezka? Ma identyfikowac rodzaj/zagniezdzenie elementu, czy jego precyzyjna pozycje w dokumencie? Generalnie: os ancestor-or-self. sz.
Re: Jak sprawdzić czy liczba
Author: pbk++
Date: Fri, 04 Apr 2008 12:10
Date: Fri, 04 Apr 2008 12:10
23 lines
1677 bytes
1677 bytes
szomiz pisze: > Użytkownik "pbk++" <jbond007@free.polbox.pl> napisał w wiadomości > news:ft533q$l3e$1@nemesis.news.neostrada.pl... > >> Inny problem. Chcę w transformowanym dokumencie w atrybucie zapisać xpath >> do przetwarzanego dokumentu. Jak wyłuskać xpath? > > xPath dokumentu? A nie elementu? Elementu, przejęzyczenie. > > Jak ma byc wyrazana sciezka? Ma identyfikowac rodzaj/zagniezdzenie elementu, > czy jego precyzyjna pozycje w dokumencie? Precyzyjną pozycję. Tak, żeby można było do niej ponownie wrócić. > > Generalnie: os ancestor-or-self. os to oś ? -- Piotrek
Re: Jak sprawdzić czy liczba
Author: szomiz
Date: Fri, 04 Apr 2008 12:15
Date: Fri, 04 Apr 2008 12:15
11 lines
1489 bytes
1489 bytes
Użytkownik "pbk++" <jbond007@free.polbox.pl> napisał w wiadomości news:ft55u4$olb$1@atlantis.news.neostrada.pl... >> Generalnie: os ancestor-or-self. > os to oś ? A jest w xml'owych tematach jakies ancestor-or-self bedace czym innym? -- Piotrek
Re: Jak sprawdzić czy liczba
Author: pbk++
Date: Fri, 04 Apr 2008 12:26
Date: Fri, 04 Apr 2008 12:26
28 lines
2152 bytes
2152 bytes
szomiz pisze: > Użytkownik "pbk++" <jbond007@free.polbox.pl> napisał w wiadomości > news:ft55u4$olb$1@atlantis.news.neostrada.pl... > >>> Generalnie: os ancestor-or-self. > >> os to oś ? > > A jest w xml'owych tematach jakies ancestor-or-self bedace czym innym? No, nie. Rozumiem, ze oś wybiera mi odpowiednie elementy: bieżący i przodkowie. Ale jak je wszystkie zapisać jako atrybut, czyli uzyskać de facto xpath. Chciałbym to załatwić w przekształceniu xsl, nie zaś chodząc za pomocą DOM'a po drzewie. Przepraszam za może nie do końca przemyślane pytania, ale przetwarzanie xml za pomocą xslt jest dla mnie nowością i choć uczę się, to nadal mam mętlik w głowie. Nawiązując do poprzedniego wątku o regułach, to robię to zapomocą xlst. Idzie dobrze, cieszę się tylko, że ja mam przygotować framework oraz sprawdzić co ciekawsze reguły. Bo, gdybym miał je wszystkie dłubać to pewnie przyrósłbym rzycią do krzesła ;-) -- Piotrek
Re: Jak sprawdzić czy liczba
Author: szomiz
Date: Fri, 04 Apr 2008 12:52
Date: Fri, 04 Apr 2008 12:52
35 lines
2446 bytes
2446 bytes
Użytkownik "pbk++" <jbond007@free.polbox.pl> napisał w wiadomości
news:ft56s0$s6g$1@atlantis.news.neostrada.pl...
szomiz pisze:
> Użytkownik "pbk++" <jbond007@free.polbox.pl> napisał w wiadomości
> news:ft55u4$olb$1@atlantis.news.neostrada.pl...
>
>>> Generalnie: os ancestor-or-self.
>
>> os to oś ?
>
> A jest w xml'owych tematach jakies ancestor-or-self bedace czym innym?
No, nie.
> Rozumiem, ze oś wybiera mi odpowiednie elementy: bieżący i przodkowie. Ale
> jak je wszystkie zapisać jako atrybut, czyli uzyskać de facto xpath.
> Chciałbym to załatwić w przekształceniu xsl, nie zaś chodząc za pomocą
> DOM'a po drzewie.
<xsl:apply-templates select="ancestor-of-self::*" mode="pthElem"/>
<xsl:template match="*" mode="pthElem">
<xsl:value-of select="concat('/*[',count(preceding-sibling::*)+1,']')"/>
</xsl:template>
A jak to wsadzic w atrybut, to se juz poszukaj.
> Nawiązując do poprzedniego wątku o regułach, to robię to zapomocą xlst.
> Idzie dobrze, cieszę się tylko, że ja mam przygotować framework oraz
Ja bym poczekal z tydzien/dwa...
:-P
sz.
Re: Jak sprawdzić czy liczba
Author: pbk++
Date: Mon, 07 Apr 2008 09:10
Date: Mon, 07 Apr 2008 09:10
41 lines
2424 bytes
2424 bytes
szomiz pisze:
> Użytkownik "pbk++" <jbond007@free.polbox.pl> napisał w wiadomości
> <xsl:apply-templates select="ancestor-of-self::*" mode="pthElem"/>
>
> <xsl:template match="*" mode="pthElem">
> <xsl:value-of select="concat('/*[',count(preceding-sibling::*)+1,']')"/>
> </xsl:template>
Dziękuję, działa.
Ale czy dałoby się się uzyskać coś takiego:
/SAD[1]/Zgloszenie[1]/Towar[9]
Modyfikacja
concat('/',name(),'[',count(preceding-sibling::*[name(self) =
name(sibling)])+1,']')
Daje powyższy efekt, ale niestety numery w nawiasach kwadratowych
odnoszą się do wszystkich elementów, nie zaś do elementów typu Towar.
Co powinienem napisać zamiast *[name(self) = name(sibling)], aby uzyskać
numerację odnoszącą się tylko do elementów ścieżki czyli kolejno SAD,
Zgloszenie i Towar.
Da się to zrobić, czy może trzeba przeiterować się po DOMie?
> A jak to wsadzic w atrybut, to se juz poszukaj.
Dałem radę.
> Ja bym poczekal z tydzien/dwa...
Poczekał, bo wtedy dopiero dotrę do reguł które mnie rozłożą na łopatki?
Czy też poczekał, bo nie warto tego już robić, gdyż świat się zmienia ?
:-P
--
Piotrek
Re: Jak sprawdzić czy liczba
Author: szomiz
Date: Mon, 07 Apr 2008 09:43
Date: Mon, 07 Apr 2008 09:43
17 lines
1890 bytes
1890 bytes
Użytkownik "pbk++" <jbond007@free.polbox.pl> napisał w wiadomości
news:ftcogj$t1$1@atlantis.news.neostrada.pl...
> Modyfikacja
> concat('/',name(),'[',count(preceding-sibling::*[name(self) =
> name(sibling)])+1,']')
A co to jest self i sibling? Zajrzyj moze wreszcie do specyfikacji. Jest
krotsza od HTML'owych!
> Co powinienem napisać zamiast *[name(self) = name(sibling)], aby uzyskać
preceding-sibling::*[name()=name(current())]
I chyba juz kiedys o tym bylo...
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