1

ここに私の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>
……(略)

これが私の現在の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>

</xsl:スタイルシート>

問題は、出力が次のようになることです: Akt sporządzono na podstawie pisma value1 z dnia value2. nr value3 Skreślono tekst drukowany rubryk I、II、III、IV、V.

代わりに: value3 Skreślono tekst drukowany rubryk I, II, III, IV, V. Akt sporządzono na podstawie pisma value1 z dnia value2. 番号

私が知る限り、XML から注文します。結果なしで xsl:template の優先度属性を使用しようとしました。このコードをどのように改善できるか知っている人はいますか?

4

1 に答える 1

2

XSLT は<SzablonPismNadrzedny NazwaObiektu="Przesylka1">入力 XML で最初に検出されるため、最初に出力されます。

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
于 2012-09-14T09:39:30.757 に答える