这样做的背景是我正在使用Solr搜索结果。结果以XML格式返回。我正在使用XSL转换来显示结果。
<table>
<thead>
<tr>
<th>Name</th>
<th>Age</th>
<th>Latitude</th>
<th>Longitude</th>
</tr>
</thead>
<xsl:for-each select="response/result/doc">
<xsl:sort select="str[@name='Name']"/>
<xsl:sort select="int[@name='Age']"/>
<xsl:sort select="???[@name='lat']"/>
<xsl:sort select="???[@name='lng']"/>
<tbody>
<tr>
<td><xsl:value-of select="str[@name='Name']"/></td>
<td><xsl:value-of select="int[@name='Age']"/></td>
<td><xsl:value-of select="???[@name='lat']"/></td>
<td><xsl:value-of select="???[@name='lng']"/></td>
</tr>
</tbody>
</xsl:for-each>
</table>
我最初将每个字段编入索引为字符串。一旦我改变它并将数字索引为整数,它们就不会显示在输出中。我完全猜测并且使用int,因为我将它们编入为整数并且它有效。 ;)
以下是我在Solr中索引纬度和经度的数据类型:
<field name="lat" type="latLongDouble" indexed="true" stored="true"/>
<field name="lng" type="latLongDouble" indexed="true" stored="true"/>
我不确定任何可用于“???”的正确XSL数据类型上方。
非常感谢!
佩雷斯
答案 0 :(得分:0)
尼斯!花了一些时间,但我想通了。
<doc>
<int name="Age">14</int>
<str name="Name">Jonh Doe</str>
<double name="lat">45.17614</double>
<double name="lng">-93.87341</double>
</doc>
从XML查看每个元素的数据类型,并使用它代替“???”上方。
在我的例子中,我会这样做:
<td><xsl:value-of select="double[@name='lat']"/></td>
<td><xsl:value-of select="double[@name='lng']"/></td>
希望这可以帮助将来的某个人!
佩雷斯