Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Разбить XML данные на страницы / 5 сообщений из 5, страница 1 из 1
26.07.2007, 00:16
    #34684359
makshoner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбить XML данные на страницы
Добрый день. Вопрос про XML, XSLT.

1.Есть исходный файл test.xml :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
<?xml version="1.0" encoding="iso-8859-1" ?>
<?xml-stylesheet type='text/xsl' href='transform.xsl'?>

<data>
	<item id="i1"	sector="s1"	subsector="u1"> 561 </item>
	<item id="i10"	sector="s3"	subsector="u4"> 15 </item>
	<item id="i22"	sector="s2"	subsector="u2"> 1234 </item>
	<item id="i11"	sector="s1"	subsector="u2"> 123 </item>
	<item id="i17"	sector="s1"	subsector="u3"> 165 </item>
	<item id="i61"	sector="s2"	subsector="u1"> 346 </item>
	<item id="i12"	sector="s2"	subsector="u5"> 3425 </item>
	<item id="i2"	sector="s3"	subsector="u4"> 78 </item>
	<item id="i14"	sector="s3"	subsector="u4"> 51 </item>
	<item id="i21"	sector="s1"	subsector="u5"> 346 </item>
	<item id="i39"	sector="s3"	subsector="u2"> 463 </item>
	<item id="i44"	sector="s2"	subsector="u3"> 151 </item>
	<item id="i89"	sector="s1"	subsector="u1"> 451 </item>
	<item id="i81"	sector="s2"	subsector="u4"> 771 </item>
	<item id="i36"	sector="s2"	subsector="u5"> 5654 </item>
	<item id="i27"	sector="s3"	subsector="u3"> 362 </item>
	<item id="i15"	sector="s1"	subsector="u5"> 234 </item>
	<item id="i18"	sector="s3"	subsector="u2"> 73 </item>
	<item id="i51"	sector="s3"	subsector="u5"> 567 </item>
	<item id="i26"	sector="s1"	subsector="u4"> 17 </item>
	<item id="i95"	sector="s3"	subsector="u5"> 67489 </item>
	<item id="i13"	sector="s1"	subsector="u3"> 54 </item>
	<item id="i71"	sector="s1"	subsector="u3"> 2 </item>
	<item id="i23"	sector="s2"	subsector="u1"> 345 </item>
	<item id="i7"	sector="s2"	subsector="u1"> 67 </item>
	<item id="i80"	sector="s1"	subsector="u3"> 7754 </item>
	<item id="i9"	sector="s3"	subsector="u4"> 343 </item>
	<item id="i4"	sector="s1"	subsector="u2"> 51 </item>
	<item id="i99"	sector="s3"	subsector="u5"> 5637 </item>
	<item id="i16"	sector="s1"	subsector="u5"> 716 </item>
	<item id="i85"	sector="s2"	subsector="u1"> 4561 </item>
	<item id="i73"	sector="s1"	subsector="u3"> 46 </item>
	<item id="i48"	sector="s2"	subsector="u1"> 82 </item>
	<item id="i20"	sector="s2"	subsector="u2"> 5461 </item>
	<item id="i66"	sector="s1"	subsector="u1"> 4526 </item>
	<item id="i52"	sector="s3"	subsector="u5"> 73 </item>
	<item id="i64"	sector="s3"	subsector="u4"> 56 </item>
	<item id="i54"	sector="s2"	subsector="u4"> 827 </item>
	<item id="i19"	sector="s2"	subsector="u4"> 1634 </item>
	<item id="i25"	sector="s3"	subsector="u3"> 546 </item>
	<item id="i50"	sector="s1"	subsector="u2"> 61 </item>
	<item id="i63"	sector="s2"	subsector="u3"> 611 </item>
	<item id="i42"	sector="s2"	subsector="u4"> 36 </item>
	<item id="i67"	sector="s1"	subsector="u2"> 61 </item>
	<item id="i98"	sector="s1"	subsector="u1"> 541 </item>
	<item id="i76"	sector="s1"	subsector="u5"> 61 </item>
	<item id="i62"	sector="s3"	subsector="u5"> 146 </item>
	<item id="i68"	sector="s2"	subsector="u1"> 346 </item>
	<item id="i82"	sector="s1"	subsector="u5"> 15 </item>
	<item id="i83"	sector="s2"	subsector="u5"> 43 </item>
	<item id="i3"	sector="s3"	subsector="u5"> 345 </item>
	<item id="i6"	sector="s1"	subsector="u5"> 134 </item>
	<item id="i30"	sector="s1"	subsector="u4"> 15 </item>
	<item id="i100"	sector="s2"	subsector="u2"> 27 </item>
	<item id="i101"	sector="s1"	subsector="u3"> 293 </item>
	<item id="i102"	sector="s4"	subsector="u4"> 282 </item>
	<item id="i103"	sector="s3"	subsector="u2"> 389 </item>
	<item id="i104"	sector="s2"	subsector="u3"> 289 </item>
	<item id="i105"	sector="s3"	subsector="u5"> 754 </item>
	<item id="i106"	sector="s2"	subsector="u2"> 617 </item>
	<item id="i107"	sector="s3"	subsector="u2"> 859 </item>
	<item id="i108"	sector="s2"	subsector="u1"> 809 </item>
	<item id="i109"	sector="s2"	subsector="u2"> 15 </item>
	<item id="i110"	sector="s2"	subsector="u6"> 394 </item>
	<item id="i111"	sector="s1"	subsector="u3"> 855 </item>
	<item id="i112"	sector="s2"	subsector="u1"> 693 </item>
	<item id="i113"	sector="s3"	subsector="u4"> 900 </item>
	<item id="i114"	sector="s1"	subsector="u5"> 652 </item>
	<item id="i115"	sector="s1"	subsector="u4"> 55 </item>
	<item id="i116"	sector="s1"	subsector="u6"> 907 </item>
	<item id="i117"	sector="s2"	subsector="u2"> 699 </item>
	<item id="i118"	sector="s2"	subsector="u5"> 404 </item>
	<item id="i119"	sector="s4"	subsector="u6"> 284 </item>
	<item id="i120"	sector="s4"	subsector="u4"> 857 </item>
	<item id="i121"	sector="s3"	subsector="u3"> 145 </item>
	<item id="i122"	sector="s3"	subsector="u4"> 645 </item>
	<item id="i123"	sector="s1"	subsector="u4"> 777 </item>
	<item id="i124"	sector="s1"	subsector="u3"> 87 </item>
	<item id="i125"	sector="s3"	subsector="u2"> 586 </item>
	<item id="i126"	sector="s1"	subsector="u3"> 452 </item>
	<item id="i127"	sector="s2"	subsector="u2"> 983 </item>
	<item id="i128"	sector="s2"	subsector="u4"> 72 </item>
	<item id="i129"	sector="s2"	subsector="u6"> 260 </item>
	<item id="i130"	sector="s2"	subsector="u4"> 155 </item>
	<item id="i131"	sector="s3"	subsector="u4"> 705 </item>
	<item id="i132"	sector="s1"	subsector="u1"> 788 </item>
	<item id="i133"	sector="s3"	subsector="u1"> 590 </item>
	<item id="i134"	sector="s3"	subsector="u5"> 259 </item>
	<item id="i135"	sector="s2"	subsector="u5"> 502 </item>
	<item id="i136"	sector="s3"	subsector="u4"> 654 </item>
	<item id="i137"	sector="s3"	subsector="u6"> 950 </item>
	<item id="i138"	sector="s4"	subsector="u6"> 210 </item>
	<item id="i139"	sector="s2"	subsector="u4"> 424 </item>
	<item id="i140"	sector="s1"	subsector="u5"> 618 </item>
	<item id="i141"	sector="s4"	subsector="u4"> 317 </item>
	<item id="i142"	sector="s2"	subsector="u5"> 223 </item>
	<item id="i143"	sector="s1"	subsector="u5"> 240 </item>
	<item id="i144"	sector="s1"	subsector="u2"> 479 </item>
	<item id="i145"	sector="s2"	subsector="u4"> 695 </item>
	<item id="i146"	sector="s3"	subsector="u3"> 231 </item>
	<item id="i147"	sector="s2"	subsector="u4"> 352 </item>
	<item id="i148"	sector="s4"	subsector="u3"> 164 </item>
	<item id="i149"	sector="s3"	subsector="u2"> 92 </item>
	<item id="i150"	sector="s4"	subsector="u6"> 604 </item>
	<item id="i151"	sector="s1"	subsector="u6"> 655 </item>
	<item id="i152"	sector="s3"	subsector="u6"> 451 </item>
	<item id="i153"	sector="s3"	subsector="u5"> 238 </item>
	<item id="i154"	sector="s3"	subsector="u2"> 551 </item>
	<item id="i155"	sector="s4"	subsector="u1"> 571 </item>
	<item id="i156"	sector="s4"	subsector="u4"> 657 </item>
	<item id="i157"	sector="s4"	subsector="u6"> 84 </item>
	<item id="i158"	sector="s2"	subsector="u4"> 137 </item>
	<item id="i159"	sector="s2"	subsector="u3"> 464 </item>
	<item id="i160"	sector="s1"	subsector="u2"> 69 </item>
	<item id="i161"	sector="s4"	subsector="u2"> 431 </item>
	<item id="i162"	sector="s3"	subsector="u5"> 550 </item>
	<item id="i163"	sector="s4"	subsector="u1"> 573 </item>
	<item id="i164"	sector="s1"	subsector="u4"> 307 </item>
	<item id="i165"	sector="s2"	subsector="u3"> 867 </item>
	<item id="i166"	sector="s3"	subsector="u4"> 733 </item>
	<item id="i167"	sector="s3"	subsector="u4"> 508 </item>
	<item id="i168"	sector="s1"	subsector="u5"> 546 </item>
	<item id="i169"	sector="s4"	subsector="u4"> 406 </item>
	<item id="i170"	sector="s1"	subsector="u3"> 618 </item>
	<item id="i171"	sector="s3"	subsector="u3"> 215 </item>
	<item id="i172"	sector="s1"	subsector="u4"> 365 </item>
	<item id="i173"	sector="s3"	subsector="u5"> 4 </item>
	<item id="i174"	sector="s3"	subsector="u4"> 99 </item>
	<item id="i175"	sector="s2"	subsector="u2"> 173 </item>
	<item id="i176"	sector="s3"	subsector="u4"> 145 </item>
	<item id="i177"	sector="s2"	subsector="u5"> 286 </item>
	<item id="i178"	sector="s4"	subsector="u5"> 477 </item>
	<item id="i179"	sector="s1"	subsector="u2"> 388 </item>
	<item id="i180"	sector="s4"	subsector="u5"> 231 </item>
	<item id="i181"	sector="s3"	subsector="u4"> 506 </item>
	<item id="i182"	sector="s3"	subsector="u6"> 430 </item>
	<item id="i183"	sector="s1"	subsector="u5"> 513 </item>
	<item id="i184"	sector="s2"	subsector="u5"> 684 </item>
	<item id="i185"	sector="s2"	subsector="u2"> 908 </item>
	<item id="i186"	sector="s2"	subsector="u2"> 582 </item>
	<item id="i187"	sector="s4"	subsector="u3"> 203 </item>
	<item id="i188"	sector="s3"	subsector="u2"> 142 </item>
	<item id="i189"	sector="s3"	subsector="u4"> 238 </item>
	<item id="i190"	sector="s3"	subsector="u2"> 527 </item>
	<item id="i191"	sector="s2"	subsector="u2"> 492 </item>
	<item id="i192"	sector="s2"	subsector="u1"> 379 </item>
	<item id="i193"	sector="s2"	subsector="u3"> 256 </item>
	<item id="i194"	sector="s3"	subsector="u6"> 608 </item>
	<item id="i195"	sector="s1"	subsector="u2"> 700 </item>
	<item id="i196"	sector="s1"	subsector="u3"> 281 </item>
	<item id="i197"	sector="s3"	subsector="u3"> 627 </item>
	<item id="i198"	sector="s2"	subsector="u1"> 966 </item>
	<item id="i199"	sector="s2"	subsector="u5"> 990 </item>
	<item id="i200"	sector="s1"	subsector="u2"> 465 </item>
	<item id="i201"	sector="s2"	subsector="u4"> 586 </item>
	<item id="i202"	sector="s1"	subsector="u2"> 272 </item>
	<item id="i203"	sector="s2"	subsector="u1"> 370 </item>
	<item id="i204"	sector="s2"	subsector="u5"> 334 </item>
	<item id="i205"	sector="s2"	subsector="u6"> 255 </item>
	<item id="i206"	sector="s2"	subsector="u3"> 192 </item>
	<item id="i207"	sector="s2"	subsector="u2"> 467 </item>
	<item id="i208"	sector="s4"	subsector="u2"> 282 </item>
	<item id="i209"	sector="s2"	subsector="u4"> 446 </item>
	<item id="i210"	sector="s2"	subsector="u3"> 979 </item>
	<item id="i211"	sector="s1"	subsector="u3"> 11 </item>
	<item id="i212"	sector="s3"	subsector="u5"> 829 </item>
	<item id="i213"	sector="s2"	subsector="u2"> 178 </item>
	<item id="i214"	sector="s4"	subsector="u4"> 655 </item>
	<item id="i215"	sector="s2"	subsector="u6"> 458 </item>
	<item id="i216"	sector="s3"	subsector="u5"> 747 </item>
	<item id="i217"	sector="s3"	subsector="u2"> 66 </item>
	<item id="i218"	sector="s3"	subsector="u1"> 38 </item>
	<item id="i219"	sector="s3"	subsector="u4"> 700 </item>
	<item id="i220"	sector="s2"	subsector="u3"> 799 </item>
	<item id="i221"	sector="s1"	subsector="u1"> 57 </item>
	<item id="i222"	sector="s3"	subsector="u1"> 358 </item>
	<item id="i223"	sector="s1"	subsector="u2"> 276 </item>
	<item id="i224"	sector="s3"	subsector="u2"> 410 </item>
	<item id="i225"	sector="s4"	subsector="u6"> 824 </item>
	<item id="i226"	sector="s3"	subsector="u2"> 454 </item>
	<item id="i227"	sector="s2"	subsector="u6"> 904 </item>
	<item id="i228"	sector="s3"	subsector="u3"> 584 </item>
	<item id="i229"	sector="s3"	subsector="u4"> 450 </item>
	<item id="i230"	sector="s1"	subsector="u5"> 451 </item>
	<item id="i231"	sector="s2"	subsector="u5"> 602 </item>
	<item id="i232"	sector="s3"	subsector="u3"> 524 </item>
	<item id="i233"	sector="s1"	subsector="u3"> 751 </item>
	<item id="i234"	sector="s2"	subsector="u2"> 530 </item>
	<item id="i235"	sector="s1"	subsector="u5"> 7 </item>
	<item id="i236"	sector="s2"	subsector="u4"> 836 </item>
	<item id="i237"	sector="s3"	subsector="u6"> 850 </item>
	<item id="i238"	sector="s2"	subsector="u4"> 719 </item>
	<item id="i239"	sector="s4"	subsector="u1"> 839 </item>
	<item id="i240"	sector="s2"	subsector="u6"> 800 </item>
	<item id="i241"	sector="s4"	subsector="u4"> 311 </item>
	<item id="i242"	sector="s1"	subsector="u3"> 785 </item>
	<item id="i243"	sector="s2"	subsector="u4"> 792 </item>
	<item id="i244"	sector="s2"	subsector="u4"> 18 </item>
	<item id="i245"	sector="s2"	subsector="u5"> 299 </item>
	<item id="i246"	sector="s3"	subsector="u2"> 107 </item>
	<item id="i247"	sector="s3"	subsector="u5"> 396 </item>
	<item id="i248"	sector="s2"	subsector="u6"> 805 </item>
	<item id="i249"	sector="s1"	subsector="u5"> 883 </item>
	<item id="i250"	sector="s4"	subsector="u3"> 922 </item>
	<item id="i251"	sector="s2"	subsector="u2"> 632 </item>
	<item id="i252"	sector="s2"	subsector="u3"> 980 </item>
	<item id="i253"	sector="s1"	subsector="u4"> 689 </item>
	<item id="i254"	sector="s2"	subsector="u6"> 641 </item>
	<item id="i255"	sector="s4"	subsector="u4"> 314 </item>

	<sector id="s1">Sector  1 </sector>
	<sector id="s3">Sector  3 </sector>
	<sector id="s2">Sector  2 </sector>

	<subsector id="u1">Subsector  1 </subsector>
	<subsector id="u2">Subsector  2 </subsector>
	<subsector id="u3">Subsector  3 </subsector>
	<subsector id="u4">Subsector  4 </subsector>
	<subsector id="u5">Subsector  5 </subsector>
</data>
2. Необходимо написать XSL преобразование, которое бы выводило эти данные в виде:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
****************
Sector  1 
****************
Subsector  1 
++++++++++++++++
ID	Value
----------------
id1	value1
...
idN valueN
----------------
Subsector  2 
++++++++++++++++
ID	Value
----------------
id1	value1
...
idN valueN
...
****************
Sector  2 
****************
Subsector  1 
++++++++++++++++
ID	Value
----------------
id1	value1
...
idN valueN
----------------
Subsector  2 
++++++++++++++++
ID	Value
----------------
id1	value1
...
idN valueN
...

Дополнительно необходимо разбить эти данные на страницы по 25 строк типа (idX valueX) . Разделители страниц (<span style="page-break-before: always"></span>) можно вставлять только перед sector/subsector.

3. Вывод данных по секторам и субсекторам я организовал таким образом, файл transform.xsl :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
<?xml version="1.0" encoding="WINDOWS-1251"?>
<xsl:stylesheet version = '1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
 <xsl:template match="/">

  <xsl:for-each select="//sector">
  <xsl:sort order="ascending" select="."/>
  <xsl:variable name="CurSector" select="./@id"/>
  ****************<br/>
  <b><font color="red"><xsl:value-of select="."/></font></b><br/>
  ****************<br/>
      <xsl:for-each select="//subsector">
	<xsl:variable name="CurSubSector" select="./@id"/>
	<b><font color="blue"><xsl:value-of select="."/></font></b><br/>
	++++++++++++++++<br/>
	     <table border="0">
	     <tr><td>ID</td><td>Value</td></tr>
	     <tr><td colspan="2">-------------</td></tr>
	     <xsl:for-each select="//item">
	      <xsl:if test="(@sector = $CurSector) and (@subsector = $CurSubSector)"> 
		  <tr><td><xsl:value-of select="@id"/></td><td><xsl:value-of select="."/></td></tr>
	       </xsl:if> 
	      </xsl:for-each>
		<tr><td colspan="2">-------------</td></tr>
		</table>
      </xsl:for-each>
  </xsl:for-each>
 </xsl:template>
</xsl:stylesheet>
ВОПРОС: Рационально ли я сделал вывод данных? Каким образом разбить эти данные на страницы?
Заранее спасибо.
...
Рейтинг: 0 / 0
27.07.2007, 12:28
    #34688539
belugin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбить XML данные на страницы
1. а посему не вкалдывать элементы
Код: plaintext
1.
2.
3.
4.
5.
<section>
    <subsection>
         <item></item>
    </subsection>
</section>
2. http://www.biglist.com/lists/xsl-list/archives/200101/msg00202.html] Re: [xsl] How to create XSL for CALENDAR/MONTH layout?
...
Рейтинг: 0 / 0
17.08.2007, 00:51
    #34733841
makshoner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбить XML данные на страницы
belugin1. а посему не вкалдывать элементы
Код: plaintext
1.
2.
3.
4.
5.
<section>
    <subsection>
         <item></item>
    </subsection>
</section>
2. http://www.biglist.com/lists/xsl-list/archives/200101/msg00202.html] Re: [xsl] How to create XSL for CALENDAR/MONTH layout?
Из этого примера не очень понятно, каким образом при помощи XSLT разбить длинный список строк (в данном примере данные в тегах item) на страницы (пусть скажем по 20 строк на страницу) ?
Может у кого есть еще соображения?
...
Рейтинг: 0 / 0
17.08.2007, 18:33
    #34735767
TiG
TiG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбить XML данные на страницы
В вашем случае думаю надо писать рекурсивный шаблон для вывода одной страницы. У вас границы произвольной страницы можно определить только просчитав размеры всех предыдущих страниц. Однозначно итеративный алгоритм. Итеративные алгоритмы в XSLT довольно просто реализуются рекурсией. Ну а шаблон с параметрами позволяет "присваивать" значения "переменным" (точнее конечно же параметрам). Так что вам проще всего будет проанализировать как бы вы это реализовали на алгоритмическом языке, и сделать то же самое на XSLT, только на рекурсивных шаблонах.
Ну и еще один вариант - если эти данные формируются исключительно для такого представления, можно их изначально при генерации разбивать на куски нужного размера. Правда это конечно явное нарушение принципа разделения данных и представления. Но возможно вам это не критично.
...
Рейтинг: 0 / 0
20.08.2007, 21:45
    #34740155
belugin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбить XML данные на страницы
Вот кусочек шаблона с рекурсивным вызовом (показывает тамбнейлы для генерации фотоальбома phoa в html - полный архив присоединен)


Число 4 - это чисо картинок в строчке - в принуипе также на страницы можно бить

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<xsl:template name="tumbnails">
	<xsl:param name="start" select="number(1)"/>
	<xsl:param name="pictures" select="/album/picture"/>
    <TR>
        <xsl:for-each select="$pictures[(position() >= $start) and (position() < ($start + 4))]">
        	<xsl:call-template name="tumbnail"/>
    	</xsl:for-each>
    </TR>
	<xsl:if test="($start + 3) < count($pictures)">
		<xsl:call-template name="tumbnails">
			<xsl:with-param name="start" select="$start + 4"/>
			<xsl:with-param name="pictures" select="$pictures"/>
		</xsl:call-template>
	</xsl:if>
</xsl:template>
...
Рейтинг: 0 / 0
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Разбить XML данные на страницы / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]