c# - XSL more template -
i have source xml file , xsl code edit output xml file. have source xml file:
<root> <firma kod_firmy="tomášov" stredisko="" ico="666666" dic="cz66666 " nazev="rest" jmeno="" mesto="zl" ulice="uomlom" psc="76007"> <faktura kod_odberatel="tomášov" datum_porizeni="2014-06-12" cas_porizeni="15:34:29" datum_vystaveni="2014-06-12" datum_zdanitelneho_plneni="2014-06-12" datum_splatnosti="2014-06-26" cena_cenik="2310.72" mnozstvi="24.000"> <dane dph="21.00" sklad_cena="968.365" /> <dane dph="0.00" sklad_cena="0.000" /> </faktura> </firma> </root>
this xsl:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:output method="xml" encoding="windows-1250" indent="no"/> <xsl:template match="root/firma"> <moneydata> <xsl:apply-templates select="@nazev|faktura/@datum_porizeni|faktura/@datum_splatnosti|faktura/@datum_zdanitelneho_plneni|faktura/@cas_porizeni"/> </moneydata> </xsl:template> <xsl:template match="firma/@nazev"> <xsl:attribute name="kodagendy"><xsl:value-of select="."/></xsl:attribute> </xsl:template> <xsl:template match="firma/faktura/@datum_porizeni"> <xsl:attribute name="hosprokod"><xsl:value-of select="."/></xsl:attribute> </xsl:template> <xsl:template match="firma/faktura/@datum_splatnosti"> <xsl:attribute name="hosprokdo"><xsl:value-of select="."/></xsl:attribute> </xsl:template> <xsl:template> <xsl:attribute name="description">faktury přijaté vydané</xsl:attribute> </xsl:template> <xsl:template> <xsl:attribute name="expzkratka">_fp+fv</xsl:attribute> </xsl:template> <xsl:template match="firma/faktura/@datum_zdanitelneho_plneni"> <xsl:attribute name="expdate"><xsl:value-of select="."/></xsl:attribute> </xsl:template> <xsl:template match="firma/faktura/@cas_porizeni"> <xsl:attribute name="exptime"><xsl:value-of select="."/></xsl:attribute> </xsl:template> <xsl:template> <xsl:attribute name="vyberzaznamu">0</xsl:attribute> </xsl:template> <xsl:template match="/"> <xsl:for-each select="root/firma"> <seznamfaktvyd> <faktvyd> <doklad><xsl:value-of select="faktura/dane/@sklad_cena"/></doklad> </faktvyd> </seznamfaktvyd> </xsl:for-each> </xsl:template> </xsl:stylesheet>
and example of output:
<seznamfaktvyd> <faktvyd> <doklad>968.365</doklad> </faktvyd> </seznamfaktvyd>
but need output:
<?xml version="1.0" encoding="windows-1250"?> <moneydata kodagendy="somedata" hosprokod="somedata" hosprokdo="somedata" description="faktury přijaté vydané" expzkratka="_fp+fv" expdate="somedata" exptime="somedata" vyberzaznamu="0"> <seznamfaktvyd> <faktvyd> <doklad>968.365</doklad> <doklad>0.000</doklad> </faktvyd> </seznamfaktvyd> </moneydata>
have ideas, how this? thanks
how simple one?
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:output method="xml" version="1.0" encoding="windows-1250" indent="yes"/> <xsl:strip-space elements="*"/> <xsl:template match="firma"> <moneydata kodagendy="{@nazev}" hosprokod="{faktura/@datum_porizeni}" hosprokdo="{faktura/@datum_splatnosti}" description="faktury přijaté vydané" expzkratka="_fp+fv" expdate="{faktura/@datum_zdanitelneho_plneni}" exptime="{faktura/@cas_porizeni}" vyberzaznamu="0"> <seznamfaktvyd> <faktvyd> <xsl:for-each select="faktura/dane"> <doklad><xsl:value-of select="@sklad_cena"/></doklad> </xsl:for-each> </faktvyd> </seznamfaktvyd> </moneydata> </xsl:template> </xsl:stylesheet>
note output:
<?xml version="1.0" encoding="windows-1250"?> <moneydata kodagendy="rest" hosprokod="2014-06-12" hosprokdo="2014-06-26" description="faktury přijaté vydané" expzkratka="_fp+fv" expdate="2014-06-12" exptime="15:34:29" vyberzaznamu="0"> <seznamfaktvyd> <faktvyd> <doklad>968.365</doklad> <doklad>0.000</doklad> </faktvyd> </seznamfaktvyd> </moneydata>
is different output have requested: contains actual values source document, instead of "somedata". ;-)
Comments
Post a Comment