2012-09-14 38 views
1

這裏是我的XML:XSLT轉換輸出順序

<?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> 

....(中省略)

這裏是我當前的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>&#32;</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>&#32;</xsl:text> z dnia 
<xsl:apply-templates select="Obiekt/DataWplywu"/> 
<xsl:text>&#32;</xsl:text>. nr 
</xsl:template> 

問題是我的輸出如下所示:Aktsporządzonona podstawie pisma value1 z dnia value2。 NR值3Skreślonotekst drukowany rubryk I,II,III,IV,V。

代替:VALUE3Skreślonotekst drukowany rubryk I,II,III,IV,V。 的AktsporządzonoNA podstawie pisma VALUE1Ždnia VALUE2。 nr

據我所知,它從XML的順序。試圖在xsl:template上的用戶優先級屬性沒有結果。任何人都知道如何改進這段代碼?

在此先感謝。

+0

剛編輯的XML。我粘貼了舊的XML,我沒有使用NazwaObiektu作爲屬性。爲失誤抱歉。 – AdrianCogiel

回答

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>&#32;</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>&#32;</xsl:text> z dnia 
    <xsl:apply-templates select="Obiekt/DataWplywu"/> 
    <xsl:text>&#32;</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 

是正確的嗎?

最好的問候, 彼得

+0

Thx做了訣竅:) – AdrianCogiel

+0

@AdrianCogiel,不客氣 – Peter