我有类似这样的XML
<NavigatorItems>
<Navigator Name="Product">
<ModifierName>Product1</ModifierName>
<ModifierLink>www.Product1.com</ModifierLink>
<ModifierName>Product2</ModifierName>
<ModifierLink>www.Product2.com</ModifierLink>
<ShowAll>www.ProductMain.com</ShowAll>
</Navigator>
<Navigator Name="Article">
<ModifierName>Article1</ModifierName>
<ModifierLink>www.Article1.com</ModifierLink>
<ModifierName>Article2</ModifierName>
<ModifierLink>www.Article2.com</ModifierLink>
<ShowAll>www.ArticleMain.com</ShowAll>
</Navigator>
</NavigatorItems>
我需要展示这样的东西:
我尝试了以下XSLT,但它抛出了一些错误(不匹配):
XML解析错误:标记不匹配。预期:</ModifierName>
我的代码:
<xsl:for-each select="NavigatorItems/Navigator">
<xsl:variable name="link" select="ModifierLink"/>
<tr>
<td><a href ="{$link}"><xsl:value-of select="ModifierName"/></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>
我哪里错了?请建议......
答案 0 :(得分:1)
您的代码存在许多问题。我想我已经解决了所有问题,但如果您对此有任何问题,请告诉我:
<?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" encoding="UTF-8" indent="yes" />
<xsl:template match="/">
<xsl:for-each select="NavigatorItems/Navigator">
<xsl:variable name="link" select="ModifierLink"/>
<tr>
<td>
<a><xsl:attribute name="href"><xsl:value-of select="ModifierLink"/></xsl:attribute><xsl:value-of select="ModifierName" /></a>
</td>
</tr>
<xsl:if test select="ShowAll != ''">
<tr>
<td>
<a><xsl:attribute name="href"><xsl:value-of select="ShowAll"/>View More Results</a>
</td>
</tr>
</xsl:test>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>