[Mono-devel-list] System.Xml.XmlAttribute.Specified should not be default True
Atsushi Eno
atsushi at ximian.com
Mon Jan 12 22:25:54 EST 2004
Hello,
Thanks. I found this patch arose some event bugs and it looks not so
easy to fix soon, but this patch should be applied.
Atsushi Eno
Boris Kirzner wrote:
> Hello
>
> The Specified attribute for an System.Xml.XmlAttribute node should be
> set to False if the attribute was not explicitly given a value.
>
> Steps to reproduce the problem :
> 1. Create DTD file defining some node having default attribute value.
> 2. Create XML file referencing the DTD, with node inside that attribute
> value having default in DTD is not explicitly specified.
> 3. Load XML document into XmlDocument
> 4. Inspect Specified property of the attribute.
>
> Actual result :
> True
>
> Expected result :
> False
>
> Enclosed is a small test case and a patch.
>
> Thank you in advance,
>
> Boris Kirzner
>
>
> ------------------------------------------------------------------------
>
> <?xml version="1.0"?>
> <!DOCTYPE staff SYSTEM "staff.dtd"[]>
> <staff>
> <employee>
> <address>1230 North Ave. Dallas, Texas 98551</address>
> </employee>
> </staff>
>
>
> ------------------------------------------------------------------------
>
> using System;
> using System.Xml;
>
> public class Test
> {
> static void Main(string[] args)
> {
> XmlDocument doc = new XmlDocument();
> doc.Load("staff.xml");
> XmlNodeList nodeList = doc.DocumentElement.GetElementsByTagName("employee");
> System.Xml.XmlElement testNode = (System.Xml.XmlElement)nodeList.Item(0).ChildNodes.Item(0);
> XmlAttribute streetAttr = (System.Xml.XmlAttribute)testNode.Attributes.GetNamedItem("street");
> Console.WriteLine(streetAttr.Specified.ToString());
> }
> }
>
>
>
> ------------------------------------------------------------------------
>
> --- old\XmlElement.cs 2004-01-12 18:38:28.000000000 +0200
> +++ new\XmlElement.cs 2004-01-12 18:14:27.992210100 +0200
> @@ -66,7 +66,10 @@
> for (int i = 0; i < attlist.Definitions.Count; i++) {
> DTDAttributeDefinition def = attlist [i];
> if (def.DefaultValue != null)
> + {
> SetAttribute (def.Name, def.DefaultValue);
> + attributes[def.Name].SetDefault();
> + }
> }
> }
> }
More information about the Mono-devel-list
mailing list