Я пытаюсь отобразить значение узла для имени студента, но оно отображает имя узла и значение в новой строке. Я что-то пропустил?Добавить новый узел/столбец в xml/xslt
Вот мой XML:
<StudentRequest Template="StudentRequestResultTabular.xslt" Description="Student Lookup">
<Student Type="Grade" Value="Freshmen1">
<STDUID>171TR</STDUID>
<SHNAME>Tom Riley</SHNAME>
</Student>
<Student Type="Grade" Value="Freshmen2">
<STDUID>164SR</STDUID>
<SHNAME>Sean Ryan</SHNAME>
</Student>
<Student Type="Grade" Value="Sophomore1">
<STDSID>210JM</STDSID>
<SHNAME>July Middleton</SHNAME>
</Student>
<Student Type="Grade" Value="Senior1">
<STDSID>252JD</STDSID>
<SHNAME>Jack Deer</SHNAME>
</Student>
<Student Type="Grade" Value="Junior1">
<STDRID>350JB</STDRID>
<SHNAME>John Barb</SHNAME>
</Student>
</StudentRequest>
Вот мой XSLT:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
<xsl:output method="html" indent="yes"/>
<xsl:template match="/">
<xsl:apply-templates select="StudentRequest" />
</xsl:template>
<xsl:template match="StudentRequest">
<table>
<tr>
<th>Student Grade</th>
<th>Student Name</th>
<th>ID Type</th>
<th>Value</th>
</tr>
<xsl:apply-templates select="Student" />
</table>
</xsl:template>
<xsl:template match="Student">
<xsl:variable name="StudentGrade">
<xsl:value-of select="@Value"/>
</xsl:variable>
<xsl:for-each select="*">
<tr>
<td><xsl:value-of select="$StudentGrade"/></td>
<td><xsl:value-of select="StudentRequest/Student/SHNAME"/></td>
<td><xsl:value-of select="local-name()"/></td>
<td><xsl:value-of select="."/></td>
</tr>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Токовый выход:
StudentGrade Student Name ID Type Value
Freshmen1 STDUID 171TR
Freshmen1 SHNAME Tom Riley
Freshmen2 STDUID 164SR
Freshmen2 SHNAME Sean Ryan
Sophomore1 STDSID 210JM
Sophomore1 SHNAME July Smith
Senior1 STDSID 252JD
Senior1 SHNAME Jack Deer
Junior1 STDRID 350JB
Junior1 SHNAME John Barb
Требуемая мощность:
StudentGrade Student Name ID Type Value
Freshmen1 Tom Riley STDUID 171TR
Freshmen2 Sean Ryan STDUID 164SR
Sophomore1 July Smith STDSID 210JM
Senior1 Jack Deer STDSID 252JD
Junior1 John Barb STDRID 350JB
Почему Том Райли запись обертка 'Student', в то время как все остальные' StudentID'? И почему у каждого ученика есть другое имя элемента? Вы уверены, что так организован настоящий документ? –
@ michael.hor257k обновленная запись обертки для «Студента» для всех. Идентификаторы учащихся имеют различный тип, поэтому у них разные имена элементов. Я показываю идентификатор типа как столбец, потому что он может иметь разные типы идентификаторов. – user793468
Теперь, когда вы отредактировали вопрос, уже не так, что таблица стилей, отображаемая вами, дает результат, который вы показываете. –