🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.xml
Article #9452

Re: [XSLT] jak zrobić LIMIT wyników ?

#9452
From: szomiz
Date: Mon, 06 Aug 2007 12:58
66 lines
4010 bytes
Użytkownik "John Doe" <spamujWYTNIJTO@op.pl> napisał w wiadomości
news:3c23.00000089.46b6f5c2@newsgate.onet.pl...
>W jaki sposób zrobić limit wyników zwracanych z bazy XML ? Np 20 wyników na
> stronę i linki do wyboru strony.

Sposobow jest kilka.

Czysto xslt'owo: position(). Ale wtedy nie //x:oferta, tylko konkretna
wzgledna sciezka.

Swoja droga skad moda na // ? Procesory potanialy?

Tyle, ze jest to srednio madre rozwiazanie. Bo jaki jest sens wyciagac
zestaw danych dla 100 obiektow, jezeli wiesz, ze wyswietlisz 20?

Podaj namiar na dostawce procesorow, ktorych uzywasz...

Ja te rzeczy robie nieco inaczej. Bedzie nieco OT, ale co mi tam.

1. Wiesz czego szukasz, wiec pierwszym zapytaniem wyciagasz _tylko_ liste
identyfikatorow spelniajacych warunki.
2. Zapamietujesz sobie te liste - na IIS'sie mozna to zrobic metoda
brute-force, znaczy nadac nazwe taka jak SQL i zapamietac w zmiennej
aplikacyjnej/sesyjnej.
3. Wyniki wyswietlasz przy pomocy drugiego zapytania, ktore prostym .split -
.slice - .join wyciaga _dokladnie_ to czego potrzebujesz.
4. Przy "nastepnej" stronie sprawdzasz czy masz odpowiednia zmienna w swoim
"cache". Jezeli jest: go to 3, jezeli nie: go to 2.

Pytanie: w sesji, czy w aplikacji? Prywatnie jestem wrogiem sesji (zwlaszcza
w rozwiazaniach portalowo/informacyjno/referencyjnych). Wiekszosc zapytan
uzytkownikow jest bolesnie powtarzalna (co mozna sprawdzic analizujac logi).
Ergo: istotna czesc zapytan bedzie sie powtarzac, ergo: trzeba to
wykorzystac.

I dlatego aplikacyjne.

Teraz jeszcze bardziej OT (dlatego cross-post).

Jezeli w serwisie dane sa czesciej czytane niz pisane _nie_ma_sensu_ meczyc
bazy zadawaniem do niej w kolko tych samych zapytan. Statystycznie rzecz
ujmujac o wiele czesciej zdarza sie sytuacja, ze ktos inny o _ten_sam_
zestaw danych od ich ostatniej aktualizacji zapytal, niz ze nikt tego nie
zrobil.

I nalezy to bezwzglednie wykorzystac. Trzeba tylko pamietac, zeby przy
aktualizacji danych pousuwac odpowiednia czesc przykeszowanych wynikow (przy
pierwszym zapytaniu sie odtworza). Listy list rozwiazauja problem.

Zabawy troche wiecej, ale ile satysfakcji ;-)

Mozna pojsc dalej (ale to juz hardcore, wiec niekoniecznie za pierwszym
razem) i przy _starcie_ serwisu wczytywac do aplikacji listy identyfikatorow
"wyskakujacych" przy standardowych zapytaniach (najczesciej: lokalizacja i
kategoria). A pozniej mnozyc tablice (byle nie wszystko przez wszystko, da
sie o rzedy wielkosci wydajniej - na pl.comp.lang.javascript napisalem
kiedys jak). I ewentualnie zapamietywac wyniki mnozen (ale tutaj jednak z
kontrola liczby pamietanych wynikow).

Przy tym modelu trzeba pamietac o sporej liczbie drobiazgow. I moze cos o
tym napisze, bo codeguru poprosilo mnie o artykul i byc moze to jest wlasnie
temat.

-- --- -- --- -- --- 
sz. & Draco - byrnenski pies pasterski
http://szomiz.republika.pl/dod/draco/ 
Technical Details
Message-ID: <f97602$f0j$1@atlantis.news.tpi.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.internetia.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mail
References: <3c23.00000089.46b6f5c2@newsgate.onet.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.internetia.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mail
From: "szomiz" <szomiz@kocha.dostawac.reklamy.przez.net>
Newsgroups: pl.comp.xml,pl.comp.www.server-side
Subject: Re: [XSLT] jak zrobić LIMIT
 wyników ?
Date: Mon, 6 Aug 2007 14:58:48 +0200
Organization: tp.internet - http://www.tpi.pl/
Lines: 68
Message-ID: <f97602$f0j$1@atlantis.news.tpi.pl>
References: <3c23.00000089.46b6f5c2@newsgate.onet.pl>
NNTP-Posting-Host: hau2.internetdsl.tpnet.pl
X-Trace: atlantis.news.tpi.pl 1186405187 15379 79.187.20.2 (6 Aug 2007 12:59:47 GMT)
X-Complaints-To: usenet@tpi.pl
NNTP-Posting-Date: Mon, 6 Aug 2007 12:59:47 +0000 (UTC)
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.3790.2663
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3028
X-RFC2646: Format=Flowed; Original
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit