|
From: <te...@us...> - 2006-10-02 21:01:45
|
Revision: 12
http://svn.sourceforge.net/hex/?rev=12&view=rev
Author: tewald
Date: 2006-09-29 12:38:51 -0700 (Fri, 29 Sep 2006)
Log Message:
-----------
Added some exploratory code for supporting redefine, left it in but it's commented out.
Modified Paths:
--------------
hexsdtools/trunk/HEXsd/InputSchemas.cs
Modified: hexsdtools/trunk/HEXsd/InputSchemas.cs
===================================================================
--- hexsdtools/trunk/HEXsd/InputSchemas.cs 2006-09-29 18:42:29 UTC (rev 11)
+++ hexsdtools/trunk/HEXsd/InputSchemas.cs 2006-09-29 19:38:51 UTC (rev 12)
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.Diagnostics;
using System.Text;
using System.Xml;
using System.Xml.Schema;
@@ -57,3 +58,66 @@
}
}
}
+
+// Chunk of code related to adding support for redefine - so far it isn't looking promising...
+
+/*
+ foreach (XmlSchema schema in _schemaSet.Schemas())
+ {
+ List<XmlSchemaRedefine> redefines = new List<XmlSchemaRedefine>();
+ foreach (XmlSchemaExternal external in schema.Includes)
+ {
+ if (external is XmlSchemaRedefine)
+ {
+ XmlSchemaRedefine redefine = (XmlSchemaRedefine)external;
+ XmlSchema redefineTarget = redefine.Schema;
+
+ foreach (XmlSchemaType redefinedType in redefine.SchemaTypes.Values)
+ {
+ // this is a redefined type - it links to one in the target schema
+ XmlSchemaType targetType = (XmlSchemaType) redefineTarget.SchemaTypes[redefinedType.QualifiedName];
+
+ // assume extension (for now) and patch up targetType
+ //Debug.Assert(redefinedType.DerivedBy == XmlSchemaDerivationMethod.Extension, "Must be redefined by extension");
+
+ // TBD fix this assumption!
+ XmlSchemaComplexType redefinedComplexType = (XmlSchemaComplexType)redefinedType;
+ XmlSchemaGroupBase redefinedContent = (XmlSchemaGroupBase)redefinedComplexType.ContentTypeParticle;
+ XmlSchemaComplexType targetComplexType = (XmlSchemaComplexType)targetType;
+ XmlSchemaGroupBase targetContent = (XmlSchemaGroupBase)targetComplexType.ContentTypeParticle;
+ while (redefinedContent.Items.Count > 0)
+ {
+ XmlSchemaObject xso = redefinedContent.Items[0];
+ redefinedContent.Items.RemoveAt(0);
+ xso.Parent = targetContent;
+ xso.SourceUri = targetContent.SourceUri;
+ targetContent.Items.Add(xso);
+ }
+ }
+
+ redefines.Add(redefine);
+ redefineTarget.Write(Console.Out);
+ schema.Write(Console.Out);
+ }
+ }
+
+ foreach (XmlSchemaRedefine redefine in redefines)
+ {
+ // remove redefine
+ schema.Includes.Remove(redefine);
+
+ // add include for same schema
+ XmlSchemaInclude include = new XmlSchemaInclude();
+ include.Schema = redefine.Schema;
+ include.SourceUri = redefine.SourceUri;
+ include.Parent = redefine.Parent;
+ schema.Includes.Add(include);
+ }
+
+ //_schemaSet.Reprocess(schema);
+ }
+
+ _schemaSet.Compile();
+
+ */
+
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|