Konuyu görüntüle
IUCODERS FORUM > Programlama > Diğer (COBOL,asp php js..) > XSLT yardım
Yazar
volkan


avatar
Giresun
Kayıt: 26.07.2006
13.04.2012-16:37 #77562
Merhaba arkadaşlar,

Elimde bir tane XML var. Ben bu xml'i xslt ile çevirmek istiyorum. Nasıl yapabilirim? Anahtarlar bazında xml'i gruplamak istiyorum.

Teşekkür ederim.

Kaynak:
<root>
<record>
<key>1</key>
<movie>Leon</movie>
</record>
<record>
<key>1</key>
<movie>Godfather</movie>
</record>
<record>
<key>2</key>
<movie>Hangover</movie>
</record>
<root>

Hedef:

<root>
<record>
<key>1</key>
<movies>
<movie>Leon</movie>
<movie>Godfather</movie>
</movies>
</record>
<record>
<key>2</key>
<movies>
<movie>Hangover</movie>
</movies>
</record>
<root>






Yazar
orhan


avatar
istanbul
admin
Kayıt: 17.11.2005
14.04.2012-11:50 #77563
http://www.w3schools.com/xsl/xsl_for_each.asp

şununla hepsinin içinde iterate edip kendi formatina cevirecen. takildigin yer olursa aksam ceviririz.





N/A
Yazar
volkan


avatar
Giresun
Kayıt: 26.07.2006
14.04.2012-17:25 #77564
Teşekkürler Orhan. Ben for-each kullanmayı biliyorum.

Yapmak istediğim bir anahtar alana göre tabloyu gruplamak. Yani şöyle birşey yapmak değil amacım

<table>
<xsl:for-each select="/root/record">
<tr>
<td><xsl:value-of select="key"/></td>
<td><xsl:value-of select="movie"/></td>
</tr>
</xsl:for-each>
</table>

Listem zaten tablo şeklinde XMLi gruplamalıyım.






Yazar
orhan


avatar
istanbul
admin
Kayıt: 17.11.2005
15.04.2012-00:29 #77565
şu xml için

kod bozuksa şurdan alı ver http://pastebin.com/x83m7T0a


<root>
	<record>
		<key>1</key>
		<movie>Leon</movie>
	</record>
	<record>
		<key>1</key>
		<movie>Godfather</movie>
	</record>
	<record>
		<key>2</key>
		<movie>Hangover</movie>
	</record>
</root> 



şu xslt iş görür

<?xml version="1.0" ?>
<xsl:stylesheet version="1.0" 
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:key name="movies-by-key" match="record" use="key" />
<xsl:template match="root">
<root> 
	<xsl:for-each select="record[count(. | key('movies-by-key', key)[1]) = 1]">
<record>
<key>
<xsl:value-of select="key" />
</key>
<movies> 
		<xsl:for-each select="key('movies-by-key', key)">
<movie>
			<xsl:value-of select="movie" /> 
</movie>
		</xsl:for-each>
</movies>
</record> 
	</xsl:for-each>
</root> 
</xsl:template>
</xsl:stylesheet>








N/A
Yazar
volkan


avatar
Giresun
Kayıt: 26.07.2006
15.04.2012-01:42 #77566
Çok çok teşekkür ederim Orhan. Verdiğin xslt işe yarıyor ama benim tam olarak aradığım çare şu linkte var. Listenin yarısı kalem'e yarısı ise çalığa ait. O yüzden gruplamak en kolayı benim için.

http://stackoverflow.com/questions/3174361/xslt-for-each-group-question











Yazar
orhan


avatar
istanbul
admin
Kayıt: 17.11.2005
15.04.2012-12:23 #77567
xslt 2.0 kullanabiliyorsan o daha mantıklı. benim yazdığım 1.0 için





N/A
Del.icio.us
Digg
Facebook
Furl
Google
Blink
Simpy
Spurl
Y! MyWeb