|
|
@@ -158,9 +158,17 @@ namespace System.Xml.Schema
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- [MonoTODO ("It has weird namespace duplication check that is different from Add(XmlSchema).")]
|
|
|
+ void CheckDuplicateNS (string targetNamespace)
|
|
|
+ {
|
|
|
+ if (Schemas (GetSafeNs (targetNamespace)).Count > 0)
|
|
|
+ throw new ArgumentException (String.Format ("Corresponding schema for namespace '{0}' has been already added.", targetNamespace));
|
|
|
+ }
|
|
|
+
|
|
|
public XmlSchema Add (string targetNamespace, XmlReader reader)
|
|
|
{
|
|
|
+ // don't check it here; check only in-use TargetNamespace
|
|
|
+ //CheckDuplicateNS (targetNamespace);
|
|
|
+
|
|
|
XmlSchema schema = XmlSchema.Read (reader, handler);
|
|
|
if (targetNamespace != null
|
|
|
&& targetNamespace.Length > 0)
|
|
|
@@ -169,7 +177,6 @@ namespace System.Xml.Schema
|
|
|
return schema;
|
|
|
}
|
|
|
|
|
|
- [MonoTODO ("Check the exact behavior when namespaces are in conflict (but it would be preferable to wait for 2.0 RTM).")]
|
|
|
public void Add (XmlSchemaSet schemaSet)
|
|
|
{
|
|
|
ArrayList al = new ArrayList ();
|
|
|
@@ -183,10 +190,12 @@ namespace System.Xml.Schema
|
|
|
Add (schema);
|
|
|
}
|
|
|
|
|
|
- [MonoTODO ("We need to research more about the expected behavior")]
|
|
|
public XmlSchema Add (XmlSchema schema)
|
|
|
{
|
|
|
- schemas.Add (schema);
|
|
|
+ if (!schemas.Contains (schema)) {
|
|
|
+ CheckDuplicateNS (schema.TargetNamespace);
|
|
|
+ schemas.Add (schema);
|
|
|
+ }
|
|
|
AddGlobalComponents (schema);
|
|
|
return schema;
|
|
|
}
|
|
|
@@ -327,7 +336,6 @@ namespace System.Xml.Schema
|
|
|
return schemas;
|
|
|
}
|
|
|
|
|
|
- [MonoTODO]
|
|
|
public ICollection Schemas (string targetNamespace)
|
|
|
{
|
|
|
targetNamespace = GetSafeNs (targetNamespace);
|