2016-04-09 9 views
1

keyidを使用してテーブルの値を表示する際に問題があります。それは私が求めていた値の代わりに偽を示しています。これらのコードで見つかった情報は無作為に生成されています。
は、これはこれは私のXSLTテーブルでXMLとXSLTでkeyidを使用して値を選択できません

<?xml version="1.0" encoding="ISO-8859-1"?> 
<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:template match="/"> 
<html> 
<body> 
<h2>Student Results</h2> 

    <table> 
    <tr> 
     <th>Student ID</th> 
     <th>Surname</th> 
     <th>Firstname</th> 
     <th>Assign1</th> 
     <th>Assign2</th> 
     <th>Exam</th> 
     <th>Final Mark</th> 
     <th>Final Grade</th> 
    </tr> 

    <xsl:for-each select="unit/student"> 
    <tr> 
     <td><xsl:value-of select="student_id"/></td> 
     <td><xsl:value-of select="sname"/></td> 
     <td><xsl:value-of select="fname"/></td> 
     <td><xsl:value-of select="resultkeyid='1'"/></td> 
     <td><xsl:value-of select="resultkeyid='2'"/></td> 
     <td><xsl:value-of select="resultkeyid='3'"/></td> 
     <td><xsl:value-of select="final_mark"/></td> 
     <td><xsl:value-of select="final_grade"/></td> 
    </tr> 
    </xsl:for-each> 
    </table> 
</body> 
</html> 
</xsl:template></xsl:stylesheet> 

、ASSIGN1、ASSIGN2内の値である私のXML

<?xml version="1.0" encoding="UTF-8"?> 


    <unit> 
     <assessment_details> 
      <assessment_item> idkey="1" 
       <type>Assignment 1</type> 
       <desc>Introductory HTML/XML/XSLT website</desc> 
       <assess_value>20</assess_value> 
      </assessment_item> idkey="2" 
      <assessment_item> 
       <type>Assignment 2</type> 
       <desc>Advanced XMl/XSLT web application</desc> 
       <assess_value>30</assess_value>    
      </assessment_item> 
      <assessment_item> idkey="3" 
       <type>Examination</type> 
       <desc>End of semester examination</desc> 
       <assess_value>50</assess_value> 
      </assessment_item> 
     </assessment_details> 
     <student> 
      <student_id>16390227</student_id> 
      <sname>Battle</sname> 
      <fname>Gillian</fname> 
      <results> 
       <stu_mark resultkeyid="1">12</stu_mark> 
       <stu_mark resultkeyid="2">25</stu_mark> 
       <stu_mark resultkeyid="3">30</stu_mark> 
       </results> 
      <final_mark> </final_mark> 
      <final_grade> </final_grade> 
     </student> 
    </unit> 

あり、そして試験ではなく、12,25,30の '偽' です。

答えて

1

<xsl:value-of select="results/stu_mark[@resultkeyid = '1']"/>などを使用してください。

+0

(ちょっと説明を追加してもいいですか、これは本当にXSLT 101ですか、同じエラーがすぐに出ていましたか?) – usr2564301

+0

私は最近、少しの間違いがあるような小さな背景でXMLとXSLTを学びました。私はまた、実際に使用されているすべての構文とコードを覚えていません。 –

+1

@MikeJoe、あなたのXSLTは最初からうまくいきますが、XMLで必要なデータを選択することがより重要であるため、XPathのチュートリアルを先に進めることをお勧めします。 'results/stu_mark'は' for-each 'の中にある 'student'コンテキストノードの' result'子のすべての 'stu_mark'の子要素を選択し、大括弧で述語を追加して要素を選択することができますあなたは欲しい。あなたの試みでは、構文的に正しいXPath式を書いていましたが、ブール値に評価されました。 –

関連する問題