XML özniteliğime neden bir ad alanı öneki ekleniyor?
Burada bir keman var :
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);
}
}
Önek ad alanı olmayan bir öznitelik ekliyorum. Bir önek oluşturuyor d1p1
.
Neden?
Yanıtlar
Kod düzeyinde cevap
Çünkü
writer.WriteAttributeString("attribute", "www.windward.net", "5");
yerleri attribute
içine www.windward.net
ve ad öneki ilişkilendirmeyi yapmak için kullanılır.
Ad alanında olmak istemiyorsanız attribute
, "www.windward.net"
ad alanı bağımsız değişkenini kaldırın :
writer.WriteAttributeString("attribute", "5");
XML düzeyinde yanıt
OP yorumunu ele almak için güncelleme:
İstediğim şey, özniteliğin ad alanına sahip olması
www.windward.net
, ancak önek içermemesidir. Bunu nasıl yapabilirim?
Bu, varsayılan ad alanlarının özniteliklere uygulanmasını istemek anlamına gelir; bu, XML Ad Alanı önerisine aykırıdır :
Varsayılan ad alanı bildirimleri doğrudan öznitelik adlarına uygulanmaz; öneksiz özniteliklerin yorumlanması, üzerinde göründükleri öğe tarafından belirlenir.
Bu özniteliklerin bir ad alanında olmasını istiyorsanız, API'nin bunları oraya koymak için bir ad alanı öneki kullanmasını kabul edin.
Ayrıca bakınız
- Varsayılan ad alanındaki XML öznitelik adları ve öğeleri?
- XML ad alanları ve nitelikleri