У меня была та же проблема, я искал решение, в конце концов я понял, что должен использовать то же пространство имен, которое я уже определил.
У меня было что-то вроде этого, чтобы создать элемент:
xmlWriter.WriteStartElement("xhtml", "link", "xmlns");
результат был:
<?xml version="1.0" encoding="utf-8" ?>
<urlset xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://www.my-site.com/en/home</loc>
<xhtml:link rel="alternative" hreflang="en" href="https://www.my-site.com/en/home" xmlns:xhtml="xmlns" />
<xhtml:link rel="alternative" hreflang="ar" href="https://www.my-site.com/fr/home" xmlns:xhtml="xmlns" />
<xhtml:link rel="alternative" hreflang="fa" href="https://www.my-site.com/fa/home" xmlns:xhtml="xmlns" />
</url>
</urlset>
проблема заключалась в том, что xmlns:xhtml="xmlns"
в теле моих xhtml:link
элементов:
<xhtml:link rel="alternative" hreflang="en" href="https://www.my-site.com/en/home" xmlns:xhtml="xmlns" />
поэтому я помещаю пространство имен http://www.w3.org/1999/xhtml
вместо пространства имен или ns, как показано ниже:
xmlWriter.WriteStartElement("xhtml", "link", "http://www.w3.org/1999/xhtml");
и теперь это стало именно то, что мне нужно:
<?xml version="1.0" encoding="utf-8" ?>
<urlset xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://www.my-site.com/en/home</loc>
<xhtml:link rel="alternative" hreflang="en" href="https://www.my-site.com/en/home" />
<xhtml:link rel="alternative" hreflang="ar" href="https://www.my-site.com/fr/home" />
<xhtml:link rel="alternative" hreflang="fa" href="https://www.my-site.com/fa/home" />
</url>
</urlset>
person
mahdi yousefi
schedule
24.06.2020