/// <summary>
        /// Register all the XML schemas associated with a version in a <see cref="XmlSchemaSet" />.
        /// </summary>
        /// <param name="container">Container to use</param>
        /// <param name="version">Version to use</param>
        protected virtual void RegisterSchemaSetVersion(IUnityContainer container, Version version)
        {
            var schemaSet     = new XmlSchemaSet();
            var found         = false;
            var schemaVersion = ToVersionString(version);

            // NOTE: Need the trailing dot so we only match exact version
            foreach (var schemaResource in GetSchemaNames(schemaVersion + "."))
            {
                using (var stream = SchemaResourceAssembly.GetManifestResourceStream(schemaResource))
                {
                    var schema = XmlSchema.Read(stream, (sender, args) => { });
                    schemaSet.Add(schema);
                }

                found = true;
            }

            if (!found)
            {
                // Quit if we didn't find anything for this version
                return;
            }

            // Compile it first, checks we have a coherent set of schemas
            schemaSet.Compile();

            // And register it
            container.RegisterInstance(schemaVersion, schemaSet);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Register all the XML schemas associated with a version in a <see cref="XmlSchemaSet" />.
        /// </summary>
        /// <param name="container">Container to use</param>
        /// <param name="version">Version to use</param>
        protected virtual void RegisterSchemaSetVersion(IUnityContainer container, Version version)
        {
            var schemaSet     = new XmlSchemaSet();
            var found         = false;
            var schemaVersion = ToVersionString(version);

            foreach (var schemaResource in GetSchemaNames(schemaVersion))
            {
                Logger.Debug(schemaVersion + ": Loading " + schemaResource);
                using (var stream = SchemaResourceAssembly.GetManifestResourceStream(schemaResource))
                {
                    var schema = XmlSchema.Read(stream, (sender, args) => { });
                    schemaSet.Add(schema);
                }

                found = true;
            }

            if (!found)
            {
                // Quit if we didn't find anything for this version
                return;
            }

            // Compile it first, checks we have a coherent set of schemas
            try
            {
                schemaSet.Compile();

                // And register it
                container.RegisterInstance(schemaVersion, schemaSet);
            }
            catch (Exception ex)
            {
                Logger.Warn(schemaVersion + ": Schema error", ex);
            }
        }
Exemplo n.º 3
0
 /// <summary>
 /// Gets the names of the schemas that are in the schema version.
 /// </summary>
 /// <param name="schemaVersion">Schema version to use</param>
 /// <returns>Enumeration of resource names with the specified schema version</returns>
 /// <remarks>We added a trailing '.' to ensure an exact match otherwise {Schema}.V2 would match against {Schema}.V2_2 schemas</remarks>
 protected virtual IEnumerable <string> GetSchemaNames(string schemaVersion)
 {
     return(SchemaResourceAssembly.GetManifestResourceNames()
            .Where(resourceName => resourceName.Contains(schemaVersion + ".") &&
                   resourceName.EndsWith(".xsd")));
 }