Привет ВСЕМ! Если кто поможет, готов заплатить 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 на вход:
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>
Вот то, чего я добился:
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>
буду очень признателен если кто поможет! плиз!