【问题标题】:Generating XSLT for the given XML. Error: Mismatch为给定的 XML 生成 XSLT。错误:不匹配
【发布时间】:2011-12-07 21:47:58
【问题描述】:

我有一个类似这样的 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 解析错误:标签不匹配。预期:&lt;/ModifierName&gt;

我的代码:

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

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

【问题讨论】:

  • 请更准确地说明您收到的错误。 “一些错误”几乎没有用。此外,您显示的 XML 在语法上无效。提供您的真实 XML 或更多地关注您的模型。
  • 嗨 Tomalak.. 感谢您的回复.. 它:XML 解析错误:标签不匹配。预期:
  • 正如我所说,您的“XML”在语法上是无效的。如果这真的是你想要解决的问题,那就打给制造这个烂摊子的人。 ;)
  • 哈哈 :) 实际上这是从响应中生成的。您能否建议我在这种情况下如何构建 XML?因为我需要显示前 3 个产品/文章以及“查看更多”,这只是一个链接。可以添加到 Navigator 标签的属性中吗?但我不确定我们是否可以添加像字符串这样的 href 链接作为属性。
  • 它是从什么响应中创建的?显然该服务器没有 XML 的概念,所以这应该在第一个实例中修复。只有在服务器提供 实际 XML(而不是远程看起来像 XML 的东西)之后,您的其他问题才能得到解决。

标签: asp.net xml xslt


【解决方案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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-29
    • 2019-05-24
    相关资源
    最近更新 更多