How to generate xsi:schemalocation attribute correctly when generating a dynamic sitemap.xml with LINQ to XML?

后端 未结 2 1281
鱼传尺愫
鱼传尺愫 2021-02-09 21:44

I am generating a dynamic sitemap.xml

According to sitemaps.org this is the header for a sitemap.xml


<         


        
2条回答
  •  一个人的身影
    2021-02-09 22:40

    Ok, I got it right. Thanks to Mike Caron
    If I declare the XAtrribute(XNamespace.Xmlns + "xsi",...) then it works

    XNamespace ns = "http://www.sitemaps.org/schemas/sitemap/0.9"; 
    XNamespace xsi = "http://www.w3.org/2001/XMLSchema-instance"; 
    return new XElement(ns + "urlset",  
        new XAttribute("xmlns", "http://www.sitemaps.org/schemas/sitemap/0.9"),
        new XAttribute(XNamespace.Xmlns + "xsi", "http://www.w3.org/2001/XMLSchema-instance"),
        new XAttribute(xsi + "schemaLocation", "http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"),
        from node in GetNodes() 
        select new XElement(ns + "url", 
            new XElement(ns + "loc", node.Loc), 
            new XElement(ns + "lastmod", node.LastMod), 
            new XElement(ns + "priority", node.Priority) 
        ) 
    ).ToString(); 
    

提交回复
热议问题