我从后端服务器收到以下响应,将数据显示为搜索结果页右侧的快速链接。
<NavigatorItems>
<Navigator Name="Shoes">
<Name>Nike</Name>
<WebSite>www.nike.com</WebSite>
<Name>Reebok</Name>
<WebSite>www.reebok.com</WebSite>
<Name>Adidas</Name>
<WebSite>www.adidas.com</WebSite>
<ShowAll>www.mysite.com/showallshoes</ShowAll>
</Navigator>
<Navigator Name="Clothes">
<Name>Lee Jeans</Name>
<WebSite>www.lee.com</WebSite>
<Name>Levis</Name>
<WebSite>www.levi.com</WebSite>
<Name>Lawman</Name>
<WebSite>www.lawman.com</WebSite>
<ShowAll>www.mysite.com/showallclothes</ShowAll>
</Navigator>
</NavigatorItems>
我需要使用XSLT显示这些项目:
某人提出的示例XSLT是这样的:
<xsl:for-each select="NavigatorItems/Navigator">
<xsl:variable name="link" select="WebSite"/>
<tr>
<td><a href ="{$link}"><xsl:value-of select="Name"/></td>
</tr>
<xsl:test select="ShowAll">
<xsl:variable name="linkShowAll" select="ShowAll"/>
<tr> <td> <a href="{$linkShowAll}"> View More Results <td> </tr>
</xsl:test>
</xsl:for-each>
但它只显示
Nike (with its appropriate link)
Lee (with its appropriate link)
我出错的地方?我尝试了很多来修改XSLT并检查但没有运气。
请建议。
答案 0 :(得分:1)
此转化:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="Navigator">
<p><xsl:value-of select="@Name"/></p>
<ul>
<xsl:apply-templates select="Name"/>
</ul>
<xsl:apply-templates select="ShowAll"/>
</xsl:template>
<xsl:template match="Name">
<li>
<a href="http://{following-sibling::WebSite[1]}">
<xsl:value-of select="."/>
</a>
</li>
</xsl:template>
<xsl:template match="ShowAll">
<p>
<a href="http://{.}">
<xsl:text>View More Results</xsl:text>
</a>
</p>
</xsl:template>
</xsl:stylesheet>
应用于提供的XML文档:
<NavigatorItems>
<Navigator Name="Shoes">
<Name>Nike</Name>
<WebSite>www.nike.com</WebSite>
<Name>Reebok</Name>
<WebSite>www.reebok.com</WebSite>
<Name>Adidas</Name>
<WebSite>www.adidas.com</WebSite>
<ShowAll>www.mysite.com/showallshoes</ShowAll>
</Navigator>
<Navigator Name="Clothes">
<Name>Lee Jeans</Name>
<WebSite>www.lee.com</WebSite>
<Name>Levis</Name>
<WebSite>www.levi.com</WebSite>
<Name>Lawman</Name>
<WebSite>www.lawman.com</WebSite>
<ShowAll>www.mysite.com/showallclothes</ShowAll>
</Navigator>
</NavigatorItems>
生成想要的正确结果:
<p>Shoes</p>
<ul>
<li>
<a href="http://www.nike.com">Nike</a>
</li>
<li>
<a href="http://www.reebok.com">Reebok</a>
</li>
<li>
<a href="http://www.adidas.com">Adidas</a>
</li>
</ul>
<p>
<a href="http://www.mysite.com/showallshoes">View More Results</a>
</p>
<p>Clothes</p>
<ul>
<li>
<a href="http://www.lee.com">Lee Jeans</a>
</li>
<li>
<a href="http://www.levi.com">Levis</a>
</li>
<li>
<a href="http://www.lawman.com">Lawman</a>
</li>
</ul>
<p>
<a href="http://www.mysite.com/showallclothes">View More Results</a>
</p>
,浏览器会像这样显示:
鞋
衣服