我试图在表格中的idref引号中显示信息,这就是它在我的XML中的显示方式。
<state id="illinois">
<scode>IL</scode>
<sname>Illinois</sname>
<capital idref="springfieldi"/>
<citiesin idref="springfieldi"/>
<citiesin idref="bloomington"/>
<citiesin idref="chicago"/>
<citiesin idref="peoria"/>
<nickname>Prairie State</nickname>
<population>12128370</population>
</state>
到目前为止,我已经获得了显示其他元素的表格。这是我的XSL代码。
<table border="2">
<tr bgcolor="grey">
<th style="width:40px">ID</th>
<th>Name</th>
<th>Capital</th>
<th>Cities</th>
<th>Nickname</th>
<th>Population</th>
</tr>
<xsl:for-each select="geography/state">
<tr>
<td><xsl:value-of select="scode" /></td>
<td><xsl:value-of select="sname" /></td>
<td><xsl:value-of select="capital" /></td>
<td><xsl:value-of select="citiesin" /></td>
<td><xsl:value-of select="nickname" /></td>
<td><xsl:value-of select="population" /></td>
</tr>
</xsl:for-each>
</table>
当我这样做时,资本和城市的列是空白的。此外,由于存在多个元素,每个元素都具有属性。我如何显示每个属性?任何帮助,将不胜感激。谢谢。
答案 0 :(得分:1)
capital
和citiesin
是输入中的元素,但您要输出的值位于idref
属性,所以你必须使用:
<td><xsl:value-of select="capital/@idref" /></td>
<td><xsl:value-of select="citiesin/@idref" /></td>
为了在使用XSLT 1.0时显示所有citiesin/@idref
值,您必须使用for-each
循环:
<td>
<xsl:for-each select="capital">
<xsl:value-of select="@idref"/>
</xsl:for-each>
</td>
使用XSLT 2.0时,这不是必需的,因为<xsl:value-of select="citiesin/@idref" />
已经返回包含所有值的序列。