2016-08-19 2 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> 

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> 

Что Держит Runni В нг

enter image description here

+0

Большое спасибо за помощь заранее :) –

+0

Может ' 'делать что-нибудь более полезное в вашем' td'? Я не слишком знаком с XSLT, но то, что вы написали, похоже на «Выберите все« студенческие »сундоды, затем перейдите к их родителям и выберите первый« студенческий »поднод. Это не то, что вы хотите - вам нужен только что выбранный узел, относительный путь которого равен '.'. – starturtle

+0

OMG YOU LEGEND !!!!!!! Я использовал этот код в предыдущих документах, он по какой-то причине работал, но потом он переставал работать по этим критериям, im полный новичок в xml. Спасибо, dude. –

ответ

1

Вы должны использовать:

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

Также лучше конкретно выбрать родительский узел в обмен на каждый:

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

XPath, ../student, является проблемой. За каждые student в документе (//student) вы отправляетесь в родительский и выбираете детей student s. Используя xsl:value-of, вы получите только первое значение, так как XSLT1.0 выбирает только значение первого элемента.

Изменить его <xsl:value-of select="."/>

так, что он выбирает текущее значение для каждого student.

Смежные вопросы