2016-08-12 15 views
0

XMLファイルのノードをカウントする必要があります。 nodsはすべて特定の文字( 'S')で始まります。どのようにすれば、「S」で始まるすべてのノードを数えることができますか?例えばXSL 1.0:ノード名の特定の開始点を持つノードをカウントする

私はこのケースでは、このファイル

<root> 
    <G_Group1> 
     <S_DAS> 
      <D_Name>Boot</D_Name> 
      <D_Speed>10</D_Speed> 
     </S_DAS> 
     <S_GRU> 
      <D_Name>Bike</D_Name> 
      <D_Speed>3</D_Speed> 
     </S_GRU> 
     <G_HEL> 
      <S_LOR> 
       <D_Color1>Green</D_Color1> 
       <D_Color2>Blue</D_Color2> 
      </S_LOR> 
     </G_HEL> 
    </G_Group1> 
    <G_Group2> 
     <S_HUZ> 
      <D_Name>Boot</D_Name> 
      <D_Speed>10</D_Speed> 
     </S_HUZ> 
     <S_HUZ> 
      <D_SPE>Bike</D_SPE> 
     </S_HUZ> 
     <S_LIL> 
      <D_BER>Green</D_BER> 
      <D_KLA>Blue</D_KLA> 
     </S_LIL> 
    </G_Group2> 
</root> 

を持っている私は6

S_DAS, S_GRU, S_LOR, S_HUZ, S_HUZ, S_LIL 

を数えるだろう誰も私を助けることができますか? 要素名 "S" で始まる、あなたが使用することができますカウントする

<xsl:template match="/"> 
    <xsl:value-of select="count(descendant::*[substring(name(),1,1)='S'])"/> 
</xsl:template> 
+0

はSOへようこそ!これまでに試したことをお見せできますか? –

+0

入力XMLが正しく構成されていません。ルート要素を設定してください。 –

+0

ありがとうございます。 実際にどのくらいの深さかわからない場合は、カウントする方法がわかりません。私はすでにこのようにcountを使用しています:)これは大丈夫ですし、すべての変数を集計することができます。 – Florian

答えて

1

:事前 で

おかげフロリアン

0

このようなカウント

count(//*[starts-with(name(), 'S')]) 
+0

偉大なRudramuni TP。これは試してフィードバックを提供します。 また、生成された出力ファイルでthsiへのアプローチですか? RTFについてですが、これはバージョン1.1を使用している場合にのみ可能です。 – Florian

+0

それは私のためには機能しません。 'code <?xml version =" 1.0 "encoding =" UTF-8 "?> \t \tます。 \t \t \t \t \tます。 \t \t \t ' ERROR:「ででSyntaxError「カウント(子孫:: * [ストリング(名前()、1、 1)eq 'S']) "。" アイデアはありますか? – Florian

+0

java -jar "saxon9h.jar" >このコマンドラインのように指定する必要があります。 –

関連する問題