这是我的XML:
<?xml version="1.0" encoding="utf-16"?>
<ArrayOfSzablonPismNadrzedny xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SzablonPismNadrzedny NazwaObiektu="Przesylka1">
<Obiekt xsi:type="PrzesylkaWplywajaca">
<NrKancelaryjny>PWP.247</NrKancelaryjny>
<DataWplywu>2012-09-15T00:00:00</DataWplywu>
<ZnakObcy>sdfsdfsdf</ZnakObcy>
....... (ommited)
</Obiekt>
</SzablonPismNadrzedny>
<SzablonPismNadrzedny NazwaObiektu="Sprawa1">
<Obiekt xsi:type="Sprawa">
<ZnakSprawyOpisowy>USC.5351.135.2012</ZnakSprawyOpisowy>
<FunkcjaPrzypisana>FE_SPRA</FunkcjaPrzypisana>
<KontekstProcesowy>EZD</KontekstProcesowy>
.... (ommited)
</Obiekt>
</SzablonPismNadrzedny>
....(ommited)
这是我目前的XSLT:
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/1999/xhtml">
<xsl:output method="xml" version="1.0" encoding="UTF-8"/>
<xsl:template match="SzablonPismNadrzedny[@NazwaObiektu='Sprawa1']">
<xsl:apply-templates select="Obiekt/ZnakSprawyOpisowy"/><xsl:text> </xsl:text>. Skreślono tekst drukowany rubryk I, II, III, IV, V.
</xsl:template>
<xsl:template match="SzablonPismNadrzedny[@NazwaObiektu='Przesylka1']">
Akt sporządzono na podstawie pisma
<xsl:apply-templates select="Obiekt/ZnakObcy"/><xsl:text> </xsl:text> z dnia
<xsl:apply-templates select="Obiekt/DataWplywu"/>
<xsl:text> </xsl:text>. nr
</xsl:template>
问题是我的输出看起来像:Aktsporządzononapodstawie pisma value1 z dnia value2。 nrvalue3Skreślonotekstdrukowany rubryk I,II,III,IV,V。
而不是:value3Skreślonotekstdrukowany rubryk I,II,III,IV,V。 Aktsporządzononapodstawie pisma value1 z dnia value2。 NR
据我所知,它取自XML的顺序。尝试使用xsl:template上的用户优先级属性而没有结果。任何人都知道如何改进这段代码?
提前致谢。
答案 0 :(得分:2)
您的XSLT首先在输入XML中找到<SzablonPismNadrzedny NazwaObiektu="Przesylka1">
,这就是它首先出现在输出中的原因。
如果您使用apply-templates以正确的顺序添加另一个模板,我认为您可以获得所需的输出。使用这个XSLT:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml">
<xsl:output method="xml" version="1.0" encoding="UTF-8"/>
<xsl:template match="/">
<xsl:apply-templates select="//SzablonPismNadrzedny[@NazwaObiektu='Sprawa1']"/>
<xsl:apply-templates select="//SzablonPismNadrzedny[@NazwaObiektu='Przesylka1']"/>
</xsl:template>
<xsl:template match="SzablonPismNadrzedny[@NazwaObiektu='Sprawa1']">
<xsl:apply-templates select="Obiekt/ZnakSprawyOpisowy"/><xsl:text> </xsl:text>. Skreślono tekst drukowany rubryk I, II, III, IV, V.
</xsl:template>
<xsl:template match="SzablonPismNadrzedny[@NazwaObiektu='Przesylka1']">
Akt sporządzono na podstawie pisma
<xsl:apply-templates select="Obiekt/ZnakObcy"/><xsl:text> </xsl:text> z dnia
<xsl:apply-templates select="Obiekt/DataWplywu"/>
<xsl:text> </xsl:text>. nr
</xsl:template>
</xsl:stylesheet>
你得到这个文本输出:
USC.5351.135.2012 . Skreślono tekst drukowany rubryk I, II, III, IV, V.
Akt sporządzono na podstawie pisma
sdfsdfsdf z dnia
2012-09-15T00:00:00 . nr
这是对的吗?
祝你好运, 彼得