private Schema ParseSchema(XElement xSchema, Uri fileName)
        {
            var targetNamespaceDeclaration = GetTargetNamespaceDeclaration(xSchema, fileName);
            var schema = new Schema(fileName, targetNamespaceDeclaration);

            var xElements = xSchema
                            .Elements(ElementXNames.Element)
                            .ToList();

            foreach (var xElement in xElements)
            {
                var item = new Item(xElement, targetNamespaceDeclaration.Value);
                schema.AddItem(item);
            }

            var roleTypeElements = xSchema
                                   .Descendants()
                                   .Where(e => e.Name == RoleTypeXNames.RoleType);

            foreach (var roleTypeElement in roleTypeElements)
            {
                var roleType = new RoleType(roleTypeElement);
                schema.AddRoleType(roleType);
            }

            return(schema);
        }
        private Schema CreateSchema(Uri entryPoint)
        {
            var schema = new Schema(entryPoint, _targetNamespaceDeclaration);

            foreach (var extensionItem in ExtensionItems)
            {
                var item = CreateItem(extensionItem);
                schema.AddItem(item);
            }

            return(schema);
        }