I am trying to create text file from xml using xslt, and i have a problem.
here is my xml:
<?xml version="1.0" encoding="UTF-8"?> <document> <płytoteka> <bestseller rok="2015"> <płyta id="p01"> <gatunek>Pop&Rock</gatunek> <tytuł>Atramentowa</tytuł> <wykonawca>Celińska Stanisława</wykonawca> <data_premiery>2015-05-08</data_premiery> <cena>37.49</cena> <rok_nagrania>2015</rok_nagrania> <czas_trwania>51:19</czas_trwania> <czas_od_premiery>P222D</czas_od_premiery> <dostepnosc mp3="1" cd="0" dvd="1"/> <playlista> <utwór>Czerń i biel<czas>3:27</czas> </utwór> <utwór>Czy o kimś ktoś<czas>2:17</czas> </utwór> <utwór>Atramentowa rumba<czas>5:16</czas> </utwór> <utwór>Do rycerzy, do szlachty, do mieszczan<czas>3:22</czas> </utwór> <utwór>Drzwi odemknij<czas>3:21</czas> </utwór> <utwór>Moje życie, twoje życie<czas>3:19</czas> </utwór> <utwór>Obfitość<czas>3:20</czas> </utwór> <utwór>Jego portret<czas>3:15</czas> </utwór> <utwór>I znowu on<czas>3:11</czas> </utwór> <utwór>Nie strasz<czas>3:55</czas> </utwór> <utwór>Smuteczku mój<czas>3:44</czas> </utwór> <utwór>Szeptem do mnie mów<czas>3:33</czas> </utwór> <utwór>Wielka słota<czas>3:11</czas> </utwór> <utwór>Wakacje z deszczem<czas>2:59</czas> </utwór> <utwór>Pieśń cygańska<czas>3:09</czas> </utwór> </playlista> </płyta> </bestseller> </płytoteka> </document> Next is my xslt code:
<?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="text"/> <xsl:template match="text()"> <xsl:if test="normalize-space(.)"> <xsl:value-of select="concat(normalize-space(.), '')"/> </xsl:if> <xsl:apply-templates/> </xsl:template> <xsl:template match="/"> <xsl:text>TXT
</xsl:text> <xsl:apply-templates /> </xsl:template> <xsl:template match="płytoteka"> <xsl:apply-templates select="bestseller"/> <xsl:text>
</xsl:text> </xsl:template> <xsl:template match="bestseller"> <xsl:text>
</xsl:text> <xsl:text>BESTSELLER:</xsl:text> <xsl:value-of select="concat('		',./@rok,'
')" /> <xsl:text>
</xsl:text> <xsl:apply-templates select="płyta"/> <xsl:text>
</xsl:text> </xsl:template> <xsl:template match="płyta"> <xsl:text>
</xsl:text> <xsl:text>PLYTA:
</xsl:text> <xsl:text>Gatunek:	</xsl:text> <xsl:apply-templates select="gatunek"/> <xsl:text>
</xsl:text> <xsl:text>Tytul: 	</xsl:text> <xsl:apply-templates select="tytuł"/> <xsl:text>
</xsl:text> <xsl:text>Wykonawca: 	</xsl:text> <xsl:apply-templates select="wykonawca"/> <xsl:text>
</xsl:text> <xsl:text>Data premiery: 	</xsl:text> <xsl:apply-templates select="data_premiery"/> <xsl:text>
</xsl:text> <xsl:text>Cena: 	</xsl:text> <xsl:apply-templates select="cena"/> <xsl:text>
</xsl:text> <xsl:text>Rok nagrania: 	</xsl:text> <xsl:apply-templates select="rok_nagrania"/> <xsl:text>
</xsl:text> <xsl:text>Czas trwania: 	</xsl:text> <xsl:apply-templates select="czas_trwania"/> <xsl:text>
</xsl:text> <xsl:text>Czas od premiery: 	</xsl:text> <xsl:apply-templates select="czas_od_premiery"/> <xsl:text>
</xsl:text> <xsl:apply-templates select="playlista"/> </xsl:template> <xsl:template match="playlista"> <xsl:text>
</xsl:text> <xsl:text>		UTWORY:
		</xsl:text> <xsl:for-each select="utwór"> <xsl:value-of select="."/> </xsl:for-each> <xsl:text>
</xsl:text> </xsl:template> </xsl:stylesheet> And my output:
TXT BESTSELLER: 2015 PLYTA: Gatunek: Pop&Rock Tytul: Atramentowa Wykonawca: Celińska Stanisława Data premiery: 2015-05-08 Cena: 37.49 Rok nagrania: 2015 Czas trwania: 51:19 Czas od premiery: P222D UTWORY: Czerń i biel3:27 Czy o kimś ktoś2:17 Atramentowa rumba5:16 Do rycerzy, do szlachty, do mieszczan3:22 Drzwi odemknij3:21 Moje życie, twoje życie3:19 Obfitość3:20 Jego portret3:15 I znowu on3:11 Nie strasz3:55 Smuteczku mój3:44 Szeptem do mnie mów3:33 Wielka słota3:11 Wakacje z deszczem2:59 Pieśń cygańska3:09 And the problem is about elements "utwór" and "czas" from the xml file, this elements i want to display in the txt output, more divided, for example:
UTWORY: Czerń i biel 3:27 Czy o kimś ktoś 2:17 Atramentowa rumba 5:16 Do rycerzy, do szlachty, do mieszczan 3:22 Drzwi odemknij 3:21 Moje życie, twoje życie 3:19 Obfitość 3:20 Jego portret 3:15 I znowu on 3:11 Nie strasz 3:55 Smuteczku mój 3:44 Szeptem do mnie mów 3:33 Wielka słota 3:11 Wakacje z deszczem 2:59 Pieśń cygańska 3:09 I just want to make space between this elements or even better display this two elements in some kind of order, just to be pleasing to the eyes, like:
UTWORY: Czerń i biel 3:27 Czy o kimś ktoś 2:17 Atramentowa rumba 5:16 Do rycerzy, do szlachty, do mieszczan 3:22 Drzwi odemknij 3:21 Moje życie, twoje życie 3:19 Obfitość 3:20 Jego portret 3:15 I znowu on 3:11 Nie strasz 3:55 Smuteczku mój 3:44 Szeptem do mnie mów 3:33 Wielka słota 3:11 Wakacje z deszczem 2:59 Pieśń cygańska 3:09 is it even possible? I am using to transform http://xsltransform.net
One more thing, i have to apologise for some Polish words, i was to lazy to translate some names of elements to english, and i know if everything would be in english the files will be more clearly, but in the end, it is just about xslt logic. Thank you in advance.
No comments:
Post a Comment