2009-07-20 7 views
0

場合、私は次のXMLファイルを持っている質問声明

<DriveLayout> 
<Drive driveVolume="/u" Group="sa" Owner="sa" totalSpace="4" /> 
<Drive driveVolume="/u" Group="sa" Owner="sa" totalSpace="16" /> 
<Drive driveVolume="/u" Group="sa" Owner="sa" totalSpace="510" /> 
<Drive driveVolume="/u" Group="sa" Owner="sa" /> 
<Drive driveVolume="/u" Group="sa" Owner="sa" totalSpace="15" /> 
<VolumeGroups> 
<VolumeGroup storage="1" /> 
<VolumeGroup totalSpace="32" /> 
<VolumeGroup totalSpace="16" /> 
</VolumeGroups> 
</DriveLayout> 

私は次のようになりますXSLTスタイルシートを使用してアクセスしようとしています。

<td class="LabelText" Width="10%"> 
     <xsl:value-of select="/DriveLayout/VolumeGroups/@totalSpace" /> 
    </td> 

これは正しいとは思われません。誰でも正しいXPATHを知っていますか?

また、フィールドtotalSpaceがドライブノードに存在するかどうかを確認するには、xslt if文を使用します。私はこのような何かを使ってみましたが、これはうまくいかなかったのです。

<xsl:if test="@totalSpace = ''" > 

ありがとうございます。

+0

正しいXPATHのようなものを使用することができますか?あなたは2つのtotalSpace属性を持っていて、/ VolumeGroupを中止しました。 –

答えて

1

を支援それを機能させる。どのようにプロセッサーはあなたが参照するものを知っていますか?

あなたが現在持っているものから最小の変化はこのことでしょう

:ノードの存在が可能

<xsl:if test="/DriveLayout/Drive/@totalSpace"> 
    <!-- ... --> 
</xsl:if> 

<td class="LabelText" Width="10%"> 
    <xsl:value-of select="/DriveLayout/VolumeGroups/VolumeGroup/@totalSpace[1]" /> 
</td> <!-- you need to write full paths! -------^^^^^^^^^^^^ --> 

と、この:

<td class="LabelText" Width="10%"> 
    <xsl:value-of select="/DriveLayout/VolumeGroups/VolumeGroup/@totalSpace[2]" /> 
</td> 

と、このそのためのXPath式を記述するだけでチェックできます。 でない場合、結果のノードセットは空になり、空のノードセットはfalseと評価されます。

2

私はあなたがちょうどあなたのXPathの1つのレベルを逃した、とあなたは以下の例でし属性の存在を考える:

<xsl:template match="/DriveLayout/VolumeGroups/VolumeGroup"> 
    <xsl:choose> 
     <xsl:when test="not(@totalSpace)"> 
      There's nothing here 
     </xsl:when> 
     <xsl:otherwise> 
      <td> 
       <xsl:value-of select="@totalSpace" /> 
      </td> 
     </xsl:otherwise> 
    </xsl:choose> 
</xsl:template> 

希望、これはあなたが完全なパスを記述する必要が

0

あなたがそのレベルのすべてのtotalSpaceの属性の合計を探しているなら、あなたは何のために

<xsl:value-of select="sum(/DriveLayout/VolumeGroups/VolumeGroup/@totalSpace)"/>