2004-01-21 Atsushi Enomoto <atsushi@ximian.com>
authorAtsushi Eno <atsushieno@gmail.com>
Wed, 21 Jan 2004 04:52:08 +0000 (04:52 -0000)
committerAtsushi Eno <atsushieno@gmail.com>
Wed, 21 Jan 2004 04:52:08 +0000 (04:52 -0000)
* XsdKeyTable.cs : Matching evaluation is incorrect when path is more
  than depth 2.
* XsdValidatingReader.cs : Should clear LocalTypeDefinition when no
  xsi:type was specified.
  Moved character validation inside AssessEndElementSchemaValidity().

svn path=/trunk/mcs/; revision=22319

mcs/class/System.XML/Mono.Xml.Schema/ChangeLog
mcs/class/System.XML/Mono.Xml.Schema/XsdKeyTable.cs
mcs/class/System.XML/Mono.Xml.Schema/XsdValidatingReader.cs

index 8c653b104d9153e8c94478c00ebe4a61b3d31805..a0c8b8d11a00c13eba4c1e87d88adbd7d20a3683 100644 (file)
@@ -1,3 +1,11 @@
+2004-01-21  Atsushi Enomoto <atsushi@ximian.com>
+
+       * XsdKeyTable.cs : Matching evaluation is incorrect when path is more
+         than depth 2.
+       * XsdValidatingReader.cs : Should clear LocalTypeDefinition when no
+         xsi:type was specified.  
+         Moved character validation inside AssessEndElementSchemaValidity().
+
 2004-01-20  Atsushi Enomoto <atsushi@ximian.com>
 
        * XsdParticleValidationState.cs : Use ValidatedMaxOccurs instead of
index d2fe936e27a10669cadeb41685eb9f4069e2e9e5..2fe7452ee35e08205f58ffc03ff4f3025a6a4d57 100644 (file)
@@ -87,8 +87,8 @@ namespace Mono.Xml.Schema
                                iter--;\r
 \r
                                XsdIdentityStep step;\r
-                               for (int x = 0; x <= iter; x++, iter--) {\r
-                                       step = path.OrderedSteps [iter - x];\r
+                               for (int x = 0; 0 <= iter; x++, iter--) {\r
+                                       step = path.OrderedSteps [iter];\r
                                        if (step.IsAnyName)\r
                                                continue;\r
                                        XmlQualifiedName qname = (XmlQualifiedName) qnameStack [qnameStack.Count - x - 1];\r
index b567ae31bf26742dec183360e71c46124b7a88e1..3b64a59f084b99dc44295aae077402af61c4a842 100644 (file)
@@ -827,6 +827,8 @@ namespace Mono.Xml.Schema
                                        }
                                }
                        }
+                       else
+                               context.LocalTypeDefinition = null;
 
                        // Create Validation Root, if not exist.
                        // [Schema Validity Assessment (Element) 1.1]
@@ -901,6 +903,8 @@ namespace Mono.Xml.Schema
                                context.LocalTypeDefinition = GetLocalTypeDefinition (xsiType);
                                AssessLocalTypeDerivationOK (context.LocalTypeDefinition, element.ElementType, element.BlockResolved);
                        }
+                       else
+                               context.LocalTypeDefinition = null;
 
                        // 5 Not all things cannot be assessed here.
                        // It is common to 5.1 and 5.2
@@ -1148,6 +1152,11 @@ namespace Mono.Xml.Schema
                                childParticleState = context.ParticleState;
                        ValidateEndElementParticle ();  // validate against childrens' state.
 
+                       if (shouldValidateCharacters) {
+                               ValidateEndCharacters ();
+                               shouldValidateCharacters = false;
+                       }
+
                        context.Load (reader.Depth);
 
                        // 3.3.4 Assess ElementLocallyValidElement 5: value constraints.
@@ -1612,7 +1621,6 @@ namespace Mono.Xml.Schema
                                if (schemas.Count == 0)
                                        break;
 
-//                             context.Load (reader.Depth);
                                if (skipValidationDepth < 0 || reader.Depth <= skipValidationDepth) {
                                        if (shouldValidateCharacters) {
                                                ValidateEndCharacters ();
@@ -1633,14 +1641,10 @@ namespace Mono.Xml.Schema
                                if (reader.Depth == skipValidationDepth) {
                                        skipValidationDepth = -1;
                                        context.Clear ();
-                               } else {
-//                                     context.Load (reader.Depth);
-                                       if (shouldValidateCharacters) {
-                                               ValidateEndCharacters ();
-                                               shouldValidateCharacters = false;
-                                       }
-                                       AssessEndElementSchemaValidity ();
                                }
+                               else
+                                       AssessEndElementSchemaValidity ();
+
                                storedCharacters.Length = 0;
                                childParticleState = null;
                                popContext = true;