powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / XSLT помогите ПЛИЗ!!! готов заплатить!
5 сообщений из 5, страница 1 из 1
XSLT помогите ПЛИЗ!!! готов заплатить!
    #36476408
nons111ww
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет ВСЕМ! Если кто поможет, готов заплатить 20$
Мне нужно сделать преобразование из XML в HTML. одну часть я сделал, но осталась фича, которая все никак не получается

Смысл в том, что есть:
1. sectors
2. subsectors
3. items

каждый item нужно отрисовать под опр subsector'ом, который должен относиться к опр сектору. т е как то так (там в data.xml все понятно. по сути категория и подкатегория. items знают о том к чему они относятся из своих атрибутов):
****************
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
...

все это я сделал =). НО
subsectors нужно разбить как бы "по страницам". т е нужно чтобы ...скажем "<hr />" отрисовывался в тех местах, где будет это мнимый переход на след страницу, но "<hr />" не может стоять в середине subsector'а. только между ними. Не знаю как это организовать.

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.
<?xml version="1.0" encoding="iso-8859-1" ?>
<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="s2">Sector  2 </sector>
	<sector id="s3">Sector  3 </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>


Вот то, чего я добился:
Код: 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.
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html"/>

  <xsl:template match="data">
    <html>
      <head>
        <title>Task1</title>
        <style>
          .sector-title{font-size: 16pt;font-weight: bold;}
          .subsector-title{font-size: 12pt;font-weight: bold;}
        </style>
      </head>
      <body>
        <table>
          <xsl:for-each select="sector">
            <xsl:call-template name="sector">
              <xsl:with-param name="sId" select="@id"/>
              <xsl:with-param name="sPos" select="position()"/>
            </xsl:call-template>
          </xsl:for-each>
        </table>
      </body>
    </html>
  </xsl:template>
  
  <xsl:template match="sector" name="sector">
    <xsl:param name="sId"/>
    <xsl:param name="sPos"/>
    <tr>
      <td colspan="2">
        <span class="sector-title">
          <xsl:apply-templates></xsl:apply-templates>
        </span>
      </td>
    </tr>
    <xsl:for-each select="/data/subsector">
      <tr>
        <td colspan="2">
          <span class="subsector-title">
            <xsl:apply-templates></xsl:apply-templates>
          </span>
        </td>
      </tr>
      <xsl:call-template name="subsector">
        <xsl:with-param name="sId" select="$sId"/>
        <xsl:with-param name="sPos" select="$sPos"/>
      </xsl:call-template>
    </xsl:for-each>
  </xsl:template>
  <xsl:template match="subsector" name="subsector">
    <xsl:param name="sId"/>
    <xsl:param name="sPos"/>
    <xsl:param name="ssId" select="@id"/>
    <xsl:param name="ssPos" select="position()"/>
    <xsl:apply-templates select="/data/item">
      <xsl:sort select="substring-after(@id, 'i')" data-type="number" />
      <xsl:with-param name="sId" select="$sId" />
      <xsl:with-param name="ssId" select="@id" />
    </xsl:apply-templates>
  </xsl:template>

  <xsl:template match="item">
    <xsl:param name="sId"/>
    <xsl:param name="ssId"/>
    <xsl:if test="@subsector = $ssId and @sector = $sId">
      <tr>
        <td>
          <xsl:value-of select="@id" />
        </td>
        <td>
          <xsl:apply-templates>
          </xsl:apply-templates>
        </td>
      </tr>
    </xsl:if>
  </xsl:template>

</xsl:stylesheet>

буду очень признателен если кто поможет! плиз!
...
Рейтинг: 0 / 0
XSLT помогите ПЛИЗ!!! готов заплатить!
    #36476411
nons111ww
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
черт!!! 50$ !!!, это преобразование кровь с носа нужно...
...
Рейтинг: 0 / 0
XSLT помогите ПЛИЗ!!! готов заплатить!
    #36476453
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nons111wwт е нужно чтобы ...скажем "<hr />" отрисовывался в тех местах, где будет это мнимый переход на след страницуТак как все таки определить, где он должен стоять?
...
Рейтинг: 0 / 0
XSLT помогите ПЛИЗ!!! готов заплатить!
    #36476479
nons111ww
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_,

А сорри, короче должно быть не больше 25 item's на "странице" но переход должен быть только между subsector'ами. внутри subsector'a между item'ами перехода быть не может
...
Рейтинг: 0 / 0
XSLT помогите ПЛИЗ!!! готов заплатить!
    #36477051
nons111ww
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот еще один промежуточный вариант, но он разбивает на страницы только внутри Sector'a, нужно сделать так, чтобы от сектора не зависел...
Код: 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.
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html"/>


  <xsl:template match="data">
    <html>
      <head>
        <title>Task1</title>
        <style>
          .sector-title{font-size: 16pt;font-weight: bold;}
          .subsector-title{font-size: 12pt;font-weight: bold;}
        </style>
      </head>
      <body>
        <table>
          <xsl:for-each select="sector">
            <xsl:call-template name="sector">
              <xsl:with-param name="sId" select="@id"/>
              <xsl:with-param name="sPos" select="position()"/>
            </xsl:call-template>
          </xsl:for-each>
        </table>
      </body>
    </html>
  </xsl:template>


  <xsl:template match="sector" name="sector">
    <xsl:param name="sId"/>
    <xsl:param name="sPos"/>
    <tr>
      <td colspan="2">
        <span class="sector-title">
          <xsl:apply-templates></xsl:apply-templates>
        </span>
      </td>
    </tr>
    <xsl:for-each select="/data/subsector">
      <xsl:call-template name="subsector">
        <xsl:with-param name="sId" select="$sId"/>
        <xsl:with-param name="sPos" select="$sPos"/>
      </xsl:call-template>
    </xsl:for-each>
  </xsl:template>


  <xsl:template match="subsector" name="subsector">
    <xsl:param name="sId"/>
    <xsl:param name="sPos"/>
    <xsl:param name="ssId" select="@id"/>
    <xsl:param name="ssPos" select="position()"/>
    <xsl:call-template name="subsectorCounter">
      <xsl:with-param name="sId" select="$sId"/>
      <xsl:with-param name="ssId" select="$ssId"/>
      <xsl:with-param name="sPos" select="$sPos"/>
      <xsl:with-param name="ssPos" select="$ssPos"/>
      <xsl:with-param name="currPos" select="1"/>
      <xsl:with-param name="startPos" select="1"/>
    </xsl:call-template>
    <tr>
      <td colspan="2">
        <span class="subsector-title">
          <xsl:apply-templates></xsl:apply-templates>
        </span>
      </td>
    </tr>
    <xsl:apply-templates select="/data/item">
      <xsl:sort select="substring-after(@id, 'i')" data-type="number" />
      <xsl:with-param name="sId" select="$sId" />
      <xsl:with-param name="ssId" select="@id" />
    </xsl:apply-templates>
  </xsl:template>


  <xsl:template match="subsector" name="subsectorCounter">
    <xsl:param name="sId"/>
    <xsl:param name="sPos"/>
    <xsl:param name="ssId"/>
    <xsl:param name="ssPos"/>
    <xsl:param name="currPos"/>
    <xsl:param name="startPos"/>
    <xsl:param name="count"/>
    <xsl:if test="count(/data/item[@sector = $sId  and  @subsector = /data/subsector[$startPos <= position() and position() <= $currPos]/@id  ]) > 25">
      <xsl:if test="$currPos = $ssPos">
        <tr><td colspan="2"><hr style="width: 100px;"></hr></td></tr>
      </xsl:if>
      <xsl:if test="$currPos < $ssPos">
        <xsl:call-template name="subsectorCounter">
          <xsl:with-param name="sId" select="$sId"/>
          <xsl:with-param name="ssId" select="$ssId"/>
          <xsl:with-param name="sPos" select="$sPos"/>
          <xsl:with-param name="ssPos" select="$ssPos"/>
          <xsl:with-param name="currPos" select="$currPos"/>
          <xsl:with-param name="startPos" select="$currPos"/>
          <xsl:with-param name="count" select="0" />
        </xsl:call-template>
      </xsl:if>
    </xsl:if>
    <xsl:if test="count(/data/item[@sector = $sId  and  @subsector = /data/subsector[$startPos <= position() and position() <= $currPos]/@id  ]) <= 25">
      <xsl:call-template name="subsectorCounter">
        <xsl:with-param name="sId" select="$sId"/>
        <xsl:with-param name="ssId" select="$ssId"/>
        <xsl:with-param name="sPos" select="$sPos"/>
        <xsl:with-param name="ssPos" select="$ssPos"/>
        <xsl:with-param name="currPos" select="$currPos+1"/>
        <xsl:with-param name="startPos" select="$startPos"/>
        <xsl:with-param name="count" select="0" />
      </xsl:call-template>
    </xsl:if>
  </xsl:template>


  <xsl:template match="item">
    <xsl:param name="sId"/>
    <xsl:param name="ssId"/>
    <xsl:if test="@subsector = $ssId and @sector = $sId">
      <tr>
        <td>
          <xsl:value-of select="@id" />
        </td>
        <td>
          <xsl:apply-templates>
          </xsl:apply-templates>
        </td>
      </tr>
    </xsl:if>
  </xsl:template>

</xsl:stylesheet>

закрыто по просьбе автора
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / XSLT помогите ПЛИЗ!!! готов заплатить!
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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