Dlaczego przedrostek przestrzeni nazw jest dodawany do mojego atrybutu XML?
Mam tu skrzypce :
using System;
using System.Xml;
using System.IO;
using System.Text;
public class Program
{
public static void Main()
{
Console.WriteLine("Starting");
MemoryStream stream = new MemoryStream();
var utf = new UTF8Encoding(false);
XmlTextWriter writer = new XmlTextWriter(stream, utf);
writer.Formatting = Formatting.Indented;
writer.WriteStartDocument();
writer.WriteProcessingInstruction("process", "5");
writer.WriteComment("commenting");
writer.WriteStartElement("dog");
writer.WriteAttributeString("attribute", "www.windward.net", "5");
writer.WriteStartElement("cat");
writer.WriteEndElement();
writer.WriteEndElement();
writer.WriteEndDocument();
writer.Flush();
string result = utf.GetString(stream.ToArray(), 0, (int) stream.Length);
Console.WriteLine("XML: " + result);
}
}
Dodaję atrybut z przestrzenią nazw bez prefiksu. Tworzy przedrostek d1p1
.
Dlaczego?
Odpowiedzi
Odpowiedź na poziomie kodu
Dlatego
writer.WriteAttributeString("attribute", "www.windward.net", "5");
umieszcza attribute
się w www.windward.net
, a przedrostek przestrzeni nazw służy do tworzenia asocjacji.
Jeśli nie chcesz attribute
być w żadnej przestrzeni nazw, usuń "www.windward.net"
argument namespace:
writer.WriteAttributeString("attribute", "5");
Odpowiedź na poziomie XML
Aktualizacja adresu komentarza OP:
Chcę, aby atrybut miał przestrzeń nazw
www.windward.net
, ale bez przedrostka. Jak mogę to zrobić?
To sprowadza się do chęci zastosowania domyślnych przestrzeni nazw do atrybutów, co jest sprzeczne z zaleceniem przestrzeni nazw XML :
Domyślne deklaracje przestrzeni nazw nie dotyczą bezpośrednio nazw atrybutów; interpretacja atrybutów bez prefiksu jest określana przez element, na którym się pojawiają.
Jeśli chcesz, aby te atrybuty znajdowały się w przestrzeni nazw, zaakceptuj użycie przez interfejs API prefiksu przestrzeni nazw, aby je tam umieścić.
Zobacz też
- Nazwy i elementy atrybutów XML w domyślnej przestrzeni nazw?
- Przestrzenie nazw i atrybuty XML