<xsl:sort> 无法使用 <xsl:apply-templates> 以 table 形式显示数据
<xsl:sort> not working with <xsl:apply-templates> to display data in table form
我正在尝试使用 <xsl:sort>
按属性 @animalName 在 XML 文件,同时使用 <xsl:apply-templates>
在 table 中显示动物,但它似乎不起作用。有什么建议吗?
XML 文件
<animal animalName="Giraffe" animalId="No. 9">
<animalNamesInfo scientificName="Giraffa camelopardalis"> </animalNamesInfo>
</animal>
<animal animalName="Chimopanzee" animalId="No. 7" >
<animalNamesInfo scientificName="Pan troglodytes"> </animalNamesInfo>
</animal>
<animal animalName="Zebra" animalId="No. 6" >
<animalNamesInfo scientificName="Equus quagga bοehmi"> </animalNamesInfo>
</animal>
和xsl代码
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<HTML>
<BODY>
<table border="5">
<th>animal_name</th>
<th>scientific_name</th>
<xsl:apply-templates select="//animal"/>
<xsl:sort select = "@animalName" />
</table>
</BODY>
</HTML>
</xsl:template>
<xsl:template match="animal">
<tr>
<td><xsl:value-of select="@animalName"/></td>
<td><xsl:value-of select="animalNamesInfo/@scientificName"/></td>
</tr>
</xsl:template>
</xsl:stylesheet>
这是由于一个小的语法错误:xsl:sort
必须是 xsl:apply-templates
的子代。所以把这部分改成
<xsl:template match="/">
<HTML>
<BODY>
<table border="5">
<th>animal_name</th>
<th>scientific_name</th>
<xsl:apply-templates select="//animal">
<xsl:sort select = "@animalName" />
</xsl:apply-templates>
</table>
</BODY>
</HTML>
</xsl:template>
然后,一切正常。
我正在尝试使用 <xsl:sort>
按属性 @animalName 在 XML 文件,同时使用 <xsl:apply-templates>
在 table 中显示动物,但它似乎不起作用。有什么建议吗?
XML 文件
<animal animalName="Giraffe" animalId="No. 9">
<animalNamesInfo scientificName="Giraffa camelopardalis"> </animalNamesInfo>
</animal>
<animal animalName="Chimopanzee" animalId="No. 7" >
<animalNamesInfo scientificName="Pan troglodytes"> </animalNamesInfo>
</animal>
<animal animalName="Zebra" animalId="No. 6" >
<animalNamesInfo scientificName="Equus quagga bοehmi"> </animalNamesInfo>
</animal>
和xsl代码
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<HTML>
<BODY>
<table border="5">
<th>animal_name</th>
<th>scientific_name</th>
<xsl:apply-templates select="//animal"/>
<xsl:sort select = "@animalName" />
</table>
</BODY>
</HTML>
</xsl:template>
<xsl:template match="animal">
<tr>
<td><xsl:value-of select="@animalName"/></td>
<td><xsl:value-of select="animalNamesInfo/@scientificName"/></td>
</tr>
</xsl:template>
</xsl:stylesheet>
这是由于一个小的语法错误:xsl:sort
必须是 xsl:apply-templates
的子代。所以把这部分改成
<xsl:template match="/">
<HTML>
<BODY>
<table border="5">
<th>animal_name</th>
<th>scientific_name</th>
<xsl:apply-templates select="//animal">
<xsl:sort select = "@animalName" />
</xsl:apply-templates>
</table>
</BODY>
</HTML>
</xsl:template>
然后,一切正常。