为给定的XML生成XSLT。错误:不匹配

时间:2011-10-14 16:23:22

标签: asp.net xml xslt

我有类似这样的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>

我需要展示这样的东西:

enter image description here

我尝试了以下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>

我哪里错了?请建议......

1 个答案:

答案 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>