2016-11-24 7 views
0

次の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:key use="@id" name="silnik_key" match="//dane_pojazdów/silniki/silnik" /> 
で何かを使うべきだと思う「「paliwo =」benzyna属性を持つ要素「rodzaj_silnikaを」持っている「wózek」という名前のすべての要素をカウントする <xsl:value-of/>を書くことができます

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

が、私はselect="count()とそれを接続するためにはありませんか。

+0

私は初めに追加されます十分ではない? –

+0

たとえば、を追加しても問題ありません。 –

+0

私はお詫び申し上げます。私は[定義](https://www.w3.org/2001/tag/doc/qnameids-2004-03-17#sec-qnames-xml)を誤解しました。我々のコメントは削除することができます。 – zx485

答えて

0

は、どのように私は「wózek」属性 「paliwo =」benzynaを持つ要素「rodzaj_silnika」を持っている 」という名前のすべての要素をカウントする<xsl:value-of/>を書くことができます。

としてあなたのキーを定義します。

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

が、その後使います。<?xml version = "1.0" エンコードは= "UTF-8">

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