Xml &引用;只允许一个根元素";但我只有一个?

Xml &引用;只允许一个根元素";但我只有一个?,xml,xslt,Xml,Xslt,我正在尝试为一位朋友创建一个网站,我的经验绝对不是XML/XSLT的重量级 我有一个生成XML的非常简单的存储过程: SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER procedure [dbo].[setXMLData] as SELECT (SELECT title as '@Title', linkpath as '@Linkpath', displayOrd

我正在尝试为一位朋友创建一个网站,我的经验绝对不是XML/XSLT的重量级

我有一个生成XML的非常简单的存储过程:

    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
ALTER procedure [dbo].[setXMLData]
as

SELECT
    (SELECT title as '@Title',
       linkpath as '@Linkpath',
       displayOrder as '@displayOrder' FROM dbo.tblSiteMenuSections order by displayorder asc FOR XML PATH('SiteMenu'), TYPE) AS 'MENU',
    (SELECT imgPath as '@imgPath',
       displayOrder as '@displayOrder' FROM dbo.tblBannerSlides order by displayorder asc FOR XML PATH('SlideShow'), TYPE) AS 'SLIDES'
FOR XML PATH('Site')
返回以下XML:

<Site>
  <MENU>
    <SiteMenu Title="Edo" Linkpath="/default.aspx" displayOrder="0" />
    <SiteMenu Title="Infomation" Linkpath="/information.aspx" displayOrder="1" />
    <SiteMenu Title="News" Linkpath="/news.aspx" displayOrder="2" />
    <SiteMenu Title="Menu" Linkpath="/menu.aspx" displayOrder="3" />
    <SiteMenu Title="Gallery" Linkpath="/gallery.aspx" displayOrder="4" />
    <SiteMenu Title="Contact" Linkpath="/contact.aspx" displayOrder="5" />
    <SiteMenu Title="Catering" Linkpath="/catering.aspx" displayOrder="6" />
  </MENU>
  <SLIDES>
    <SlideShow imgPath="/20160806_182949.jpg" displayOrder="1" />
    <SlideShow imgPath="/20160901_193700.jpg" displayOrder="2" />
    <SlideShow imgPath="/14202562_319650221718312_9092982335636542049_n.jpg" displayOrder="3" />
    <SlideShow imgPath="/14237745_319766348373366_7639011255502415884_n.jpg" displayOrder="4" />
  </SLIDES>
</Site>
编辑2 如果我在chrome中查看页面,我会得到以下信息:

<!--?xml version="1.0" encoding="utf-8"?-->
<!--?xml-stylesheet type="text/xsl" href="/XSLT/Templates.xslt"?-->
<html xmlns="http://www.w3.org/1999/xhtml">
<head></head>
    <body>
        <site>
           <menu>
               <sitemenu title="Edo" linkpath="/default.aspx" displayorder="0">
<sitemenu title="Infomation" linkpath="/information.aspx" displayorder="1"><sitemenu title="News" linkpath="/news.aspx" displayorder="2">
<sitemenu title="Menu" linkpath="/menu.aspx" displayorder="3">
<sitemenu title="Gallery" linkpath="/gallery.aspx" displayorder="4">
<sitemenu title="Contact" linkpath="/contact.aspx" displayorder="5">
<sitemenu title="Catering" linkpath="/catering.aspx" displayorder="6"></sitemenu>
</sitemenu>
</sitemenu>
</sitemenu>
</sitemenu>
</sitemenu>
</sitemenu>
</menu>
<slides>
<slideshow imgpath="/20160806_182949.jpg" displayorder="1">
<slideshow imgpath="/20160901_193700.jpg" displayorder="2">
<slideshow imgpath="/14202562_319650221718312_9092982335636542049_n.jpg" displayorder="3">
<slideshow imgpath="/14237745_319766348373366_7639011255502415884_n.jpg" displayorder="4">
</slideshow>
</slideshow>
</slideshow>
</slideshow>
</slides>
</site>

但在IE中,我得到了这个

<xml:stylesheet></xml:stylesheet>
<Site>
  <MENU>
    <SiteMenu Title="Edo" Linkpath="/default.aspx" displayOrder="0" />
    <SiteMenu Title="Infomation" Linkpath="/information.aspx" displayOrder="1" />
    <SiteMenu Title="News" Linkpath="/news.aspx" displayOrder="2" />
    <SiteMenu Title="Menu" Linkpath="/menu.aspx" displayOrder="3" />
    <SiteMenu Title="Gallery" Linkpath="/gallery.aspx" displayOrder="4" />
    <SiteMenu Title="Contact" Linkpath="/contact.aspx" displayOrder="5" />
    <SiteMenu Title="Catering" Linkpath="/catering.aspx" displayOrder="6" />
  </MENU>
  <SLIDES>
    <SlideShow imgPath="/20160806_182949.jpg" displayOrder="1" />
    <SlideShow imgPath="/20160901_193700.jpg" displayOrder="2" />
    <SlideShow imgPath="/14202562_319650221718312_9092982335636542049_n.jpg" displayOrder="3" />
    <SlideShow imgPath="/14237745_319766348373366_7639011255502415884_n.jpg" displayOrder="4" />
  </SLIDES>
</Site>


还有一个控制台错误,当样式表在第41行有一个额外的关闭标记时,仍然显示“只允许一个根元素”


一旦你修复了这个问题,就会生成一个有效的HTML(尽管我看不到任何呈现到屏幕上的内容,除非我删除两个
脚本
链接)。

请向我们展示你的样式表。--对于Chrome,搜索编辑中添加的
[xslt]+Chrome
样式表。该网站是否联机,以便我们可以使用浏览器查看/测试响应的外观?另一方面,在使用服务器端编程(C#?)时,我想知道为什么不在服务器上执行XSLT并将生成的HTML发送到客户端。当您当前发送XML时,服务器端代码是否确保发送正确的
内容类型:application/XML
?我修复了
并删除了脚本链接,但仍然一无所获。我还遗漏了什么吗?你说的“一无所获”是什么意思?正如我所说,XSL转换的结果是一个HTML文档。在尝试使用XSLT生成HTML文档之前,您需要知道它应该是什么样子。然后测试转换是否生成所需的文档,并且不要使用浏览器执行此测试。屏幕上没有呈现任何内容,只有“开发工具”窗口中的xml节点。我添加了一个屏幕截图。让我们假设我是一个白痴,如果我不应该通过查看浏览器来测试视图,我应该使用什么?如果你没有开发环境,你可以使用在线测试工具,例如(当它没有关闭时,很遗憾,通常是这样)。我使用的是VS Studio 2013(社区免费版本),当我尝试调试站点时,它不会显示任何错误。在VS中是否有我可以使用的工具/选项?
<!--?xml version="1.0" encoding="utf-8"?-->
<!--?xml-stylesheet type="text/xsl" href="/XSLT/Templates.xslt"?-->
<html xmlns="http://www.w3.org/1999/xhtml">
<head></head>
    <body>
        <site>
           <menu>
               <sitemenu title="Edo" linkpath="/default.aspx" displayorder="0">
<sitemenu title="Infomation" linkpath="/information.aspx" displayorder="1"><sitemenu title="News" linkpath="/news.aspx" displayorder="2">
<sitemenu title="Menu" linkpath="/menu.aspx" displayorder="3">
<sitemenu title="Gallery" linkpath="/gallery.aspx" displayorder="4">
<sitemenu title="Contact" linkpath="/contact.aspx" displayorder="5">
<sitemenu title="Catering" linkpath="/catering.aspx" displayorder="6"></sitemenu>
</sitemenu>
</sitemenu>
</sitemenu>
</sitemenu>
</sitemenu>
</sitemenu>
</menu>
<slides>
<slideshow imgpath="/20160806_182949.jpg" displayorder="1">
<slideshow imgpath="/20160901_193700.jpg" displayorder="2">
<slideshow imgpath="/14202562_319650221718312_9092982335636542049_n.jpg" displayorder="3">
<slideshow imgpath="/14237745_319766348373366_7639011255502415884_n.jpg" displayorder="4">
</slideshow>
</slideshow>
</slideshow>
</slideshow>
</slides>
</site>
<xml:stylesheet></xml:stylesheet>
<Site>
  <MENU>
    <SiteMenu Title="Edo" Linkpath="/default.aspx" displayOrder="0" />
    <SiteMenu Title="Infomation" Linkpath="/information.aspx" displayOrder="1" />
    <SiteMenu Title="News" Linkpath="/news.aspx" displayOrder="2" />
    <SiteMenu Title="Menu" Linkpath="/menu.aspx" displayOrder="3" />
    <SiteMenu Title="Gallery" Linkpath="/gallery.aspx" displayOrder="4" />
    <SiteMenu Title="Contact" Linkpath="/contact.aspx" displayOrder="5" />
    <SiteMenu Title="Catering" Linkpath="/catering.aspx" displayOrder="6" />
  </MENU>
  <SLIDES>
    <SlideShow imgPath="/20160806_182949.jpg" displayOrder="1" />
    <SlideShow imgPath="/20160901_193700.jpg" displayOrder="2" />
    <SlideShow imgPath="/14202562_319650221718312_9092982335636542049_n.jpg" displayOrder="3" />
    <SlideShow imgPath="/14237745_319766348373366_7639011255502415884_n.jpg" displayOrder="4" />
  </SLIDES>
</Site>