根据条件计算元素,条件的值取自某个键

时间:2016-11-24 21:59:23

标签: xml xslt

我有以下XML文件结构。

<OtoMotor>
    <dane_pojazdów opis="Nasza baza danych">
        <silniki>
            <silnik id="_2.0V" moc="150" pojemność="2.0" paliwo="benzyna"/>
            <silnik id="_1.6V" moc="96" pojemność="1.6" paliwo="benzyna"/>
            <silnik id="_1.4V" moc="77" pojemność="1.4" paliwo="diesel"/>
            <silnik id="_3.0V" moc="350" pojemność="3.0" paliwo="benzyna"/>
            <silnik id="_1.8V" moc="120" pojemność="1.8" paliwo="diesel"/>
            <silnik id="_1.2V" moc="70" pojemność="1.2" paliwo="benzyna"/>
        </silniki>
      </dane_pojazdów>
    <oferta>
        <wózek IdPojazdu="Pe206" ścieżka="src/peugeot206wiśnia.png">
            <rodzaj_silnika IdSilnika="_2.0V"/>
            <rodzaj_skrzyni IdSkrzyni="Man1"/>
            <rok_produkcji>11/05/1998</rok_produkcji>
            <opis>Kupuj Pan</opis>
            <kolor>Wiśniowy</kolor>
            <kraj_pochodzenia>DE</kraj_pochodzenia>
            <nr_tel>600956184</nr_tel>
            <cena waluta="PLN">1200.59</cena>
            <przegląd>12/11/2016</przegląd>
        </wózek>
        <wózek IdPojazdu="Pe206" ścieżka="src/peugeot206niebieski.png">
            <rodzaj_silnika IdSilnika="_1.4V"/>
            <rodzaj_skrzyni IdSkrzyni="Aut1"/>
            <rok_produkcji>12/11/2001</rok_produkcji>
            <opis>Francuski pojazd</opis>
            <kolor>Niebieski</kolor>
            <kraj_pochodzenia>FR</kraj_pochodzenia>
            <nr_tel>23431945</nr_tel>
            <cena waluta="EUR">3561.45</cena>
            <przegląd>12/11/2017</przegląd>
        </wózek>
        <wózek IdPojazdu="Pe206" ścieżka="src/peugeot206niebieski.png">
            <rodzaj_silnika IdSilnika="_1.8V"/>
            <rodzaj_skrzyni IdSkrzyni="Man3"/>
            <rok_produkcji>01/03/2002</rok_produkcji>
            <opis>Pojazd powypadkowy</opis>
            <kolor>Niebieski</kolor>
            <kraj_pochodzenia>FR</kraj_pochodzenia>
            <nr_tel>605112561</nr_tel>
            <cena waluta="EUR">2541.45</cena>
        </wózek>
        <wózek IdPojazdu="CiBe" ścieżka="src/citroenberlingosrebrny.png">
            <rodzaj_silnika IdSilnika="_1.2V"/>
            <rodzaj_skrzyni IdSkrzyni="Man2"/>
            <rok_produkcji>16/04/2000</rok_produkcji>
            <opis>Pojazd posiada 4 zapasowe koła</opis>
            <kolor>Srebrny</kolor>
            <kraj_pochodzenia>PL</kraj_pochodzenia>
            <nr_tel>502154392</nr_tel>
            <cena waluta="PLN">15215.67</cena>
        </wózek>
     </oferta>
   </OtoMotor>

如何编写<xsl:value-of/>来计算所有名为“wózek”的元素,这些元素的元素为“rodzaj_silnika”,属性为“paliwo =”benzyna“。我想我应该使用

<xsl:key use="@id" name="silnik_key" match="//dane_pojazdów/silniki/silnik" /> 

<xsl:variable name="dany_silnik" select="key('silnik_key',@IdSilnika)"/>

但我不知道如何将其与select="count()连接。

1 个答案:

答案 0 :(得分:0)

  

如何编写<xsl:value-of/>来计算名为“wózek”的所有元素   其中包含属性“rodzaj_silnika”元素   “paliwo =” benzyna”。

将您的密钥定义为:

<xsl:key name="silnik_key" match="silnik" use="@id" />

然后使用:

<xsl:value-of select="count(/OtoMotor/oferta/wózek[key('silnik_key', rodzaj_silnika/@IdSilnika)/@paliwo='benzyna'])"/>