2012-03-26 15 views
2

私は学校の課題に取り組んでおり、このステップでは完全に困惑しています。2つの数値の間にある属性値を取得する

属性値が2つの数字の間にあるすべての要素の合計を見つける必要があります。この場合、9より大きく18未満です。1時間かけてさまざまな組み合わせを試して、これを持っている本のなかの例を見つけてください。誰かが私が間違ってやっていることを指摘するのに役立ちますか、私は正しい方向に私を揺さぶりますか?

ここにXMLとXSLTのスニペットがあります。

<course> 
<par holeNumber="1">4</par> 
<par holeNumber="2">4</par> 
<par holeNumber="3">5</par> 
<par holeNumber="4">3</par> 
<par holeNumber="5">4</par> 
<par holeNumber="6">4</par> 
<par holeNumber="7">5</par> 
<par holeNumber="8">3</par> 
<par holeNumber="9">4</par> 
<par holeNumber="10">4</par> 
<par holeNumber="11">5</par> 
<par holeNumber="12">4</par> 
<par holeNumber="13">3</par> 
<par holeNumber="14">4</par> 
<par holeNumber="15">5</par> 
<par holeNumber="16">4</par> 
<par holeNumber="17">3</par> 
<par holeNumber="18">4</par> 
</course> 

<xsl:template match="par"> 
<td><xsl:value-of select="." /></td> 
<xsl:choose> 
    <xsl:when test="./@holeNumber"> 
     <td class="sub"><xsl:value-of select="sum(@holeNumber &gt; 9)" /></td> 
     <td class="final"></td>" /></td> 
     <td class="final"></td> 
    </xsl:when> 
    <xsl:when test="1"> 

    </xsl:when> 
    <xsl:otherwise> 

    </xsl:otherwise> 
</xsl:choose> 

答えて

2
/course/par[@holeNumber <= 18 and 9 <= @holeNumber] 

あなたのmatchでこれを使用することができ、またはあなたの合計を取得するためにそれを使用することができます。

sum(/course/par[@holeNumber <= 18 and 9 <= @holeNumber]) 

注:これは<=の代わりに使用していますちょうど<を18と9の両方に使用するには=を削除します。

1

サンプル入力に印加され、次のXSLTは、ちなみに32

<?xml version="1.0" encoding="iso-8859-1"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml"/> 

    <xsl:template match="/"> 
     <xsl:value-of select="sum(course/par[@holeNumber > 9 and @holeNumber &lt; 18])"/> 
    </xsl:template> 
</xsl:stylesheet> 
+0

の所望の結果を生成する - あなたがXSLT 2を使用している場合、あなたは、LTなく< – Kevan

+0

またはスワップを使用することができます@ holeNumberと18を使用> –

+0

@DevNull - 私はコメントした*後に*私はコメント: – Kevan

関連する問題