2016-08-19 9 views
1

最近、私は可能な限り単純なデータを抽出しようとしてきましたが、XSLは常に最初のレコードを選択し続けています。XMLは同じレコードを選択し続ける

今、私は選択=「//学生を」テストして、それが成功したすべてのデータを選択し、それがテーブルにそれを表示するに来るとき、それは私が考える台無し

XML

<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?> 
<school> 
<class unitId="3311"> 
<className>English</className> 
<studentList> 
<student id="1001">Lisa Simpson</student> 
<student id="1002">Barney Rubble</student> 
<student id="1003">Donald Duck</student> 
</studentList> 
</class> 
</school> 
私はRunniください何

XSL

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

<xsl:template match="/"> 
    <html> 
    <body> 
    <h2>My Students</h2> 
    <table border="1"> 
     <tr bgcolor="#9acd32"> 
     <th style="text-align:left">STUDENT</th> 
     </tr> 
     <xsl:for-each select="//student"> 
     <tr> 
     <td><xsl:value-of select="../student"/></td> 
     </tr> 
     </xsl:for-each> 
    </table> 
    </body> 
    </html> 
</xsl:template> 
</xsl:stylesheet> 

ngの中へ

enter image description here

+0

おかげでたくさんでし 'ます。

+0

:)事前に助けるため:value-of select = "。" /> 'あなたの' td'の中​​で何かもっと役に立つ?私はXSLTに慣れていませんが、あなたが書いたことは私には「すべての「学生」サブノードを選択してから、その親に行き、最初の「学生」サブノード」を選択するように見えます。これはあなたが望むものではありません。あなたが選んだノードの相対パスは '.'です。 – starturtle

+0

お前は伝説だ!!!!!!!私は以前のドキュメントでこのコードを使用していましたが、それは何らかの理由で動作していましたが、この基準で動作しなくなりました。xmlの完全な初心者です。ありがとうございました –

答えて

1

あなたは使用する必要があります。

<xsl:value-of select="." /> 

をまたそれが良いされ、具体的のために、それぞれの親ノードを選択する:

<xsl:for-each select="/school/studentList/student"> 
[...] 
</xsl:for-each> 
0

のxpath、../studentは、問題となっています。文書内のstudent//student)ごとに、あなたはその親に行き、子供studentを選択しています。 xsl:value-ofを使用すると、XSLT1.0が最初の要素の値だけを選択するため、最初の値のみを取得します。

<xsl:value-of select="."/>

に変更し、それを、それはすべてのstudentの現在の値を選択するように。

関連する問題