我有源XML文件和XSL代码,我编辑输出XML文件。 我有这个源xml文件:
<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>
这是我的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é a 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>
这是我输出的例子:
<SeznamFaktVyd>
<FaktVyd>
<Doklad>968.365</Doklad>
</FaktVyd>
</SeznamFaktVyd>
但我需要这个输出:
<?xml version="1.0" encoding="windows-1250"?>
<MoneyData KodAgendy="somedata" HospRokOd="somedata" HospRokDo="somedata" description="faktury přijaté a vydané" ExpZkratka="_FP+FV" ExpDate="somedata" ExpTime="somedata" VyberZaznamu="0">
<SeznamFaktVyd>
<FaktVyd>
<Doklad>968.365</Doklad>
<Doklad>0.000</Doklad>
</FaktVyd>
</SeznamFaktVyd>
</MoneyData>
你有什么想法,我怎么能这样做?感谢
答案 0 :(得分:0)
一个简单的怎么样?
<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é a 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>
请注意输出:
<?xml version="1.0" encoding="windows-1250"?>
<MoneyData KodAgendy="Rest" HospRokOd="2014-06-12" HospRokDo="2014-06-26" description="faktury přijaté a 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>
与您请求的输出不同:它包含源文档中的实际值,而不是“somedata”。 ; - )